用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。