用法:
pandas.array(data, dtype=None, copy=True)
创建一个数组。
- data:对象序列
data
中的标量应该是dtype
的标量类型的实例。预计data
代表一维数据数组。当
data
是索引或系列时,将从data
中提取底层数组。- dtype:str、np.dtype 或 ExtensionDtype,可选
用于数组的 dtype。这可能是 NumPy dtype 或使用
pandas.api.extensions.register_extension_dtype()
向 pandas 注册的扩展类型。如果没有指定,有两种可能:
请注意,当
data
是 NumPy 数组时,data.dtype
不用于推断数组类型。这是因为 NumPy 无法表示可以保存在扩展数组中的所有数据类型。目前,pandas 将为以下序列推断扩展 dtype
标量类型
数组类型
pandas.arrays.FloatingArray
如果未明确给出 dtype,则在标量类型为
str
时创建的 ExtensionArray 由pd.options.mode.string_storage
确定。对于所有其他情况,将使用 NumPy 通常的推理规则。
- copy:布尔值,默认为真
是否复制数据,即使没有必要。根据
data
的类型,创建新数组可能需要复制数据,即使copy=False
也是如此。
- 扩展数组
新创建的数组。
- ValueError
当
data
不是一维时。
参数:
返回:
抛出:
注意:
省略
dtype
参数意味着 pandas 将尝试从数据中的值推断最佳数组类型。随着 pandas 和 3rd 方库添加新的数组类型,“best” 数组类型可能会发生变化。我们建议指定dtype
以确保返回数据的正确数组类型
返回的数组类型不会随着 pandas 和第三方库添加新的扩展类型而改变
此外,如果返回数组的底层内存表示很重要,我们建议将
dtype
指定为具体对象,而不是字符串别名或允许推断它。例如,pandas 的未来版本或 3rd-party 库可能包含用于字符串数据的专用 ExtensionArray。在这种情况下,以下将不再返回由 NumPy 数组支持的arrays.PandasArray
。>>> pd.array(['a', 'b'], dtype=str) <PandasArray> ['a', 'b'] Length:2, dtype:str32
这将改为返回专用于字符串数据的新 ExtensionArray。如果您确实需要 NumPy 数组支持新数组,请在 dtype.xml 中指定。
>>> pd.array(['a', 'b'], dtype=np.dtype("<U1")) <PandasArray> ['a', 'b'] Length:2, dtype:str32
最后,Pandas 的数组大多与 NumPy 重叠
当传递具有
datetime64[ns]
或timedelta64[ns]
dtype 的数据时,pandas 将始终返回DatetimeArray
或TimedeltaArray
而不是PandasArray
。这是为了与 NumPy 本身不支持的 timezone-aware 数据的情况对称。>>> pd.array(['2015', '2016'], dtype='datetime64[ns]') <DatetimeArray> ['2015-01-01 00:00:00', '2016-01-01 00:00:00'] Length:2, dtype:datetime64[ns]
>>> pd.array(["1H", "2H"], dtype='timedelta64[ns]') <TimedeltaArray> ['0 days 01:00:00', '0 days 02:00:00'] Length:2, dtype:timedelta64[ns]
例子:
如果未指定 dtype,pandas 将根据值推断最佳 dtype。有关 pandas 推断的类型,请参阅
dtype
的说明。>>> pd.array([1, 2]) <IntegerArray> [1, 2] Length:2, dtype:Int64
>>> pd.array([1, 2, np.nan]) <IntegerArray> [1, 2, <NA>] Length:3, dtype:Int64
>>> pd.array([1.1, 2.2]) <FloatingArray> [1.1, 2.2] Length:2, dtype:Float64
>>> pd.array(["a", None, "c"]) <StringArray> ['a', <NA>, 'c'] Length:3, dtype:string
>>> with pd.option_context("string_storage", "pyarrow"): ... arr = pd.array(["a", None, "c"]) ... >>> arr <ArrowStringArray> ['a', <NA>, 'c'] Length:3, dtype:string
>>> pd.array([pd.Period('2000', freq="D"), pd.Period("2000", freq="D")]) <PeriodArray> ['2000-01-01', '2000-01-01'] Length:2, dtype:period[D]
您可以将字符串别名用于
dtype
>>> pd.array(['a', 'b', 'a'], dtype='category') ['a', 'b', 'a'] Categories (2, object):['a', 'b']
或者指定实际的 dtype
>>> pd.array(['a', 'b', 'a'], ... dtype=pd.CategoricalDtype(['a', 'b', 'c'], ordered=True)) ['a', 'b', 'a'] Categories (3, object):['a' < 'b' < 'c']
如果 pandas 没有推断出专用扩展类型,则返回
arrays.PandasArray
。>>> pd.array([1 + 1j, 3 + 2j]) <PandasArray> [(1+1j), (3+2j)] Length:2, dtype:complex128
如 “Notes” 部分所述,未来可能会添加新的扩展类型(通过 pandas 或 3rd 方库),导致返回值不再是
arrays.PandasArray
。如果您需要确保未来的行为不会发生变化,请将dtype
指定为 NumPy dtype。>>> pd.array([1, 2], dtype=np.dtype("int32")) <PandasArray> [1, 2] Length:2, dtype:int32
data
必须是一维的。当输入的维度错误时会引发 ValueError。>>> pd.array(1) Traceback (most recent call last): ... ValueError:Cannot pass scalar '1' to 'pandas.array'.
相关用法
- Python pandas.arrays.IntervalArray.is_empty用法及代码示例
- Python pandas.arrays.IntervalArray.set_closed用法及代码示例
- Python pandas.arrays.IntervalArray.contains用法及代码示例
- Python pandas.arrays.IntervalArray用法及代码示例
- Python pandas.arrays.IntegerArray用法及代码示例
- Python pandas.arrays.IntervalArray.from_arrays用法及代码示例
- Python pandas.arrays.StringArray用法及代码示例
- Python pandas.arrays.SparseArray用法及代码示例
- Python pandas.array()用法及代码示例
- Python pandas.arrays.IntervalArray.from_breaks用法及代码示例
- Python pandas.arrays.ArrowStringArray用法及代码示例
- Python pandas.arrays.IntervalArray.from_tuples用法及代码示例
- Python pandas.arrays.BooleanArray用法及代码示例
- Python pandas.arrays.IntervalArray.overlaps用法及代码示例
- Python pandas.api.types.is_timedelta64_ns_dtype用法及代码示例
- Python pandas.api.indexers.FixedForwardWindowIndexer用法及代码示例
- Python pandas.api.types.is_sparse用法及代码示例
- Python pandas.api.types.is_extension_array_dtype用法及代码示例
- Python pandas.api.indexers.check_array_indexer用法及代码示例
- Python pandas.api.types.is_extension_type用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.array。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。