pandas.array#
- pandas.array(data, dtype=None, copy=True)[源代码]#
创建一个阵列。
- 参数
- data对象的顺序
里面的标量 data 应为标量类型的实例 dtype 。预料之中, data 表示一维数据数组。
什么时候 data 是索引或系列,则将从中提取基础数组 data 。
- dtypeStr、np.dtype或ExtensionDtype,可选
要用于数组的数据类型。这可以是NumPy dtype,也可以是使用Pandas注册的扩展类型
pandas.api.extensions.register_extension_dtype()
。如果未指定,则有两种可能性:
请注意,当 data 是一个NumPy数组,
data.dtype
是 not 用于推断数组类型。这是因为NumPy不能表示可以保存在扩展数组中的所有数据类型。目前,Pandas将推断出序列的扩展数据类型
标量类型
数组类型
pandas.arrays.FloatingArray
标量类型为时创建的Extension数组
str
由以下因素决定pd.options.mode.string_storage
如果没有显式地给出数据类型。对于所有其他情况,将使用NumPy通常的推理规则。
在 1.0.0 版更改: Pandas为整数数据推断出可为空的整型数据类型,为字符串数据推断为字符串数据类型,为布尔数据推断为可为空的布尔数据类型。
在 1.2.0 版更改: Pandas现在还为浮点型输入数据推断可为空的浮点型数据类型
- copy布尔值,默认为True
是否复制数据,即使不是必需的。视类型而定 data 创建新阵列可能需要复制数据,即使
copy=False
。
- 退货
- ExtensionArray
新创建的数组。
- 加薪
- ValueError
什么时候 data 不是一维的。
参见
numpy.array
构造一个NumPy数组。
Series
构建Pandas系列。
Index
构建Pandas指数。
arrays.PandasArray
包装NumPy数组的扩展数组。
Series.array
提取存储在Series中的数组。
注意事项
省略 dtype 自变量意味着Pandas将尝试从数据中的值推断最佳数组类型。随着Pandas和第三方库添加新的数组类型,“最佳”数组类型可能会发生变化。我们建议指定 dtype 以确保
返回数据的正确数组类型
随着Pandas和第三方库添加新的扩展类型,返回的数组类型不会改变
此外,如果返回数组的基础内存表示形式很重要,我们建议指定 dtype 作为具体对象,而不是字符串别名或允许对其进行推断。例如,未来版本的Pandas或第三方库可能包括用于字符串数据的专用扩展数组。在这种情况下,以下代码将不再返回
arrays.PandasArray
由NumPy数组支持。>>> pd.array(['a', 'b'], dtype=str) <PandasArray> ['a', 'b'] Length: 2, dtype: str32
这将返回专用于字符串数据的新扩展数组。如果您确实需要由NumPy数组支持新数组,请在dtype中指定。
>>> 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本身并不支持这种情况。>>> 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]
示例
如果未指定数据类型,Pandas将从这些值中推断出最佳数据类型。请参阅的说明 dtype 对于Pandas推断的类型。
>>> 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']
或指定实际的数据类型
>>> pd.array(['a', 'b', 'a'], ... dtype=pd.CategoricalDtype(['a', 'b', 'c'], ordered=True)) ['a', 'b', 'a'] Categories (3, object): ['a' < 'b' < 'c']
如果Pandas没有推断出a型专用延长线
arrays.PandasArray
返回。>>> pd.array([1 + 1j, 3 + 2j]) <PandasArray> [(1+1j), (3+2j)] Length: 2, dtype: complex128
如“备注”部分所述,未来可能会添加新的扩展类型(由Pandas或第三方库添加),导致返回值不再是
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'.