2.0.0 中的新增功能(2023 年 4 月 3 日)# 这些是 pandas 2.0.0 中的变化。请参阅发行说明以获取完整的变更日志,包括其他版本的 pandas。 增强功能# 使用 pip extras 安装可选依赖项# 使用 pip 安装 pandas 时,还可以通过指定 extras 来安装可选依赖项集。 pip install "pandas[performance, aws]>=2.0.0" 安装指南中提供的可用附加功能为 ( GH 39164 )。[all, performance, computation, fss, aws, gcp, excel, parquet, feather, hdf5, spss, postgresql, mysql, sql-other, html, xml, plot, output_formatting, clipboard, compression, test] Index现在可以保存 numpy 数字 dtypes # 现在可以在Index( GH 42717 ) 中使用任何 numpy 数字 dtype。 以前只能使用int64, uint64& float64dtypes: In [1]: pd.Index([1, 2, 3], dtype=np.int8) Out[1]: Int64Index([1, 2, 3], dtype="int64") In [2]: pd.Index([1, 2, 3], dtype=np.uint16) Out[2]: UInt64Index([1, 2, 3], dtype="uint64") In [3]: pd.Index([1, 2, 3], dtype=np.float32) Out[3]: Float64Index([1.0, 2.0, 3.0], dtype="float64") Int64Index, UInt64Index&Float64Index在 pandas 1.4 版本中已弃用,现已被删除。相反,Index应该直接使用,并且现在可以采用所有 numpy 数字 dtypes,即 int8/ int16/ int32/ int64/ uint8/ uint16/ uint32/ uint64/ float32/ float64dtypes: In [1]: pd.Index([1, 2, 3], dtype=np.int8) Out[1]: Index([1, 2, 3], dtype='int8') In [2]: pd.Index([1, 2, 3], dtype=np.uint16) Out[2]: Index([1, 2, 3], dtype='uint16') In [3]: pd.Index([1, 2, 3], dtype=np.float32) Out[3]: Index([1.0, 2.0, 3.0], dtype='float32') 保存 numpy 数字数据类型的能力Index意味着 Pandas 功能发生了一些变化。特别是,以前被迫创建 64 位索引的操作现在可以创建具有较低位大小的索引,例如 32 位索引。 以下是可能不完整的更改列表: 现在使用 numpy 数值数组实例化遵循 numpy 数组的 dtype。以前,从 numpy 数值数组创建的所有索引都被强制为 64 位。例如,现在将在 32 位系统上运行,而以前甚至在 32 位系统上运行。使用数字列表实例化仍将返回 64 位 dtype,例如将具有与之前相同的 dtype。Index(np.array([1, 2, 3]))int32int64IndexIndex([1, 2, 3])int64 DatetimeIndex( day、 month等)的各种数字日期时间属性year以前属于 dtype int64,而现在int32属于arrays.DatetimeArray.他们现在 int32还DatetimeIndex: In [4]: idx = pd.date_range(start='1/1/2018', periods=3, freq='ME') In [5]: idx.array.year Out[5]: array([2018, 2018, 2018], dtype=int32) In [6]: idx.year Out[6]: Index([2018, 2018, 2018], dtype='int32') 索引上的级别 dtypeSeries.sparse.from_coo()现在为 dtype ,与scipy 稀疏矩阵上的/int32相同。以前它们是 dtype 。rowscolsint64 In [7]: from scipy import sparse In [8]: A = sparse.coo_matrix( ...: ([3.0, 1.0, 2.0], ([1, 0, 0], [0, 2, 3])), shape=(3, 4) ...: ) ...: In [9]: ser = pd.Series.sparse.from_coo(A) In [10]: ser.index.dtypes Out[10]: level_0 int32 level_1 int32 dtype: object Index无法使用 float16 数据类型实例化。之前实例化Indexusing dtypefloat16会导致Float64Index使用 dtype float64。现在它提出了NotImplementedError: In [11]: pd.Index([1, 2, 3], dtype=np.float16) --------------------------------------------------------------------------- NotImplementedError Traceback (most recent call last) Cell In[11], line 1 ----> 1 pd.Index([1, 2, 3], dtype=np.float16) File ~/work/pandas/pandas/pandas/core/indexes/base.py:576, in Index.__new__(cls, data, dtype, copy, name, tupleize_cols) 572 arr = ensure_wrapped_if_datetimelike(arr) 574 klass = cls._dtype_to_subclass(arr.dtype) --> 576 arr = klass._ensure_array(arr, arr.dtype, copy=False) 577 result = klass._simple_new(arr, name, refs=refs) 578 if dtype is None and is_pandas_object and data_dtype == np.object_: File ~/work/pandas/pandas/pandas/core/indexes/base.py:601, in Index._ensure_array(cls, data, dtype, copy) 598 raise ValueError("Index data must be 1-dimensional") 599 elif dtype == np.float16: 600 # float16 not supported (no indexing engine) --> 601 raise NotImplementedError("float16 indexes are not supported") 603 if copy: 604 # asarray_tuplesafe does not always copy underlying data, 605 # so need to make sure that this happens 606 data = data.copy() NotImplementedError: float16 indexes are not supported 参数dtype_backend,返回 pyarrow-backed 或 numpy-backed nullable dtypes # 以下函数获得了新关键字dtype_backend(GH 36712) read_csv() read_clipboard() read_fwf() read_excel() read_html() read_xml() read_json() read_sql() read_sql_query() read_sql_table() read_parquet() read_orc() read_feather() read_spss() to_numeric() DataFrame.convert_dtypes() Series.convert_dtypes() 当设置此选项时,"numpy_nullable"它将返回DataFrame由可为空的数据类型支持的 a。 当此关键字设置为 时"pyarrow",这些函数将返回 pyarrow 支持的可空ArrowDtypeDataFrame(GH 48957、GH 49997): read_csv() read_clipboard() read_fwf() read_excel() read_html() read_xml() read_json() read_sql() read_sql_query() read_sql_table() read_parquet() read_orc() read_feather() read_spss() to_numeric() DataFrame.convert_dtypes() Series.convert_dtypes() In [12]: import io In [13]: data = io.StringIO("""a,b,c,d,e,f,g,h,i ....: 1,2.5,True,a,,,,, ....: 3,4.5,False,b,6,7.5,True,a, ....: """) ....: In [14]: df = pd.read_csv(data, dtype_backend="pyarrow") In [15]: df.dtypes Out[15]: a int64[pyarrow] b double[pyarrow] c bool[pyarrow] d string[pyarrow] e int64[pyarrow] f double[pyarrow] g bool[pyarrow] h string[pyarrow] i null[pyarrow] dtype: object In [16]: data.seek(0) Out[16]: 0 In [17]: df_pyarrow = pd.read_csv(data, dtype_backend="pyarrow", engine="pyarrow") In [18]: df_pyarrow.dtypes Out[18]: a int64[pyarrow] b double[pyarrow] c bool[pyarrow] d string[pyarrow] e int64[pyarrow] f double[pyarrow] g bool[pyarrow] h string[pyarrow] i null[pyarrow] dtype: object 写入时复制改进# 写入时复制优化中列出的方法中添加了一种新的延迟复制机制,该机制可以推迟复制,直到修改相关对象为止 。这些方法在启用写入时复制时返回视图,与常规执行 ( GH 49473 ) 相比,这提供了显着的性能改进。 df["col"]现在,当启用写入时复制时,将DataFrame 的单个列作为 Series 访问(例如),每次构造时总是返回一个新对象(不会多次返回相同的缓存 Series 对象)。这可确保这些系列对象正确遵循写入时复制规则(GH 49450) 当从现有系列构造系列时,构造Series函数现在将创建一个惰性副本(推迟复制,直到发生数据修改),默认值为copy=False(GH 50471) 当从现有的默认值(GH 51239)构建时,构造DataFrame函数现在将创建一个惰性副本(推迟复制,直到发生数据修改) DataFramecopy=False DataFrame当从 Series 对象的字典构造 DataFrame 并指定 时,构造函数现在copy=False将使用这些 Series 对象的惰性副本作为 DataFrame 的列 ( GH 50777 ) 当从orDataFrame构造 DataFrame 并指定时,构造函数现在将遵循写入时复制。SeriesIndexcopy=False 当从 NumPy 数组构造时,和构造函数现在将默认复制数组,以避免DataFrame在 改变数组时改变/ 。指定获取旧行为。当创建 /后修改 NumPy 数组时,设置pandas 并不能保证正确的 Copy-on-Write 行为。SeriesDataFrameSeriescopy=Falsecopy=FalseDataFrameSeries 现在,当使用 . 调用时,将DataFrame.from_records()遵循写入时复制DataFrame。 当启用写入时复制时,尝试使用链式赋值(例如 )设置值现在将始终发出警告。在这种模式下,链式赋值永远无法工作,因为我们总是设置一个临时对象,该对象是索引操作(getitem)的结果,在写入时复制下始终表现为副本。因此,通过链分配永远无法更新原始Series或DataFrame。因此,会向用户发出信息警告,以避免默默地不执行任何操作(GH 49467)df["a"][1:3] = 0 DataFrame.replace()现在,当 时,将遵循写入时复制机制inplace=True。 DataFrame.transpose()现在将遵循写入时复制机制。 可以就地进行的算术运算现在将遵循写入时复制机制。ser *= 2 DataFrame.__getitem__()DataFrame当有列时,现在将遵循写入时复制机制 MultiIndex。 Series.__getitem__()现在,当Series有一个MultiIndex。 Series.view()现在将遵循写入时复制机制。 可以通过以下方式之一启用写入时复制 pd.set_option("mode.copy_on_write", True) pd.options.mode.copy_on_write = True 或者,可以通过以下方式在本地启用写入时复制: with pd.option_context("mode.copy_on_write", True): ... 其他增强功能# 添加了与类型一起str使用时对访问器方法的支持(GH 50325)ArrowDtypepyarrow.string 添加了与类型一起dt使用时对访问器方法的支持(GH 50954)ArrowDtypepyarrow.timestamp read_sas()现在支持encoding='infer'正确读取并使用sas文件指定的编码。 (GH 48048) DataFrameGroupBy.quantile(),SeriesGroupBy.quantile()现在DataFrameGroupBy.std()保留可为 null 的 dtypes,而不是转换为 numpy dtypes ( GH 37493 ) DataFrameGroupBy.std(),SeriesGroupBy.std()现在支持 datetime64、timedelta64 和DatetimeTZDtypedtypes ( GH 48481 ) Series.add_suffix()、DataFrame.add_suffix()、Series.add_prefix()并DataFrame.add_prefix()支持一个axis论点。如果axis设置,则可以覆盖要考虑的轴的默认行为(GH 47819) testing.assert_frame_equal()现在显示 DataFrame 不同的第一个元素,类似于pytest的输出 ( GH 47910 ) 添加了index参数DataFrame.to_dict()(GH 46398) 添加了对扩展数组数据类型的支持merge()( GH 44240 ) DataFrame在( GH 28283 )上添加了二元运算符的元数据传播 通过( GH 28385 )将cumsum、cumprod、cummin和添加cummax到界面ExtensionArray_accumulate CategoricalConversionWarning、InvalidComparison、InvalidVersion、LossySetitemError和NoBufferPresent现在暴露于pandas.errors( GH 27656 ) test通过添加缺少的测试包来修复option_extra pytest-asyncio( GH 48361 ) DataFrame.astype()当无法进行类型转换时,抛出的异常消息已改进为包含列名称。 (GH 47571) date_range()现在支持unit关键字(“s”、“ms”、“us”或“ns”)来指定输出索引所需的分辨率(GH 49106) timedelta_range()现在支持unit关键字(“s”、“ms”、“us”或“ns”)来指定输出索引所需的分辨率(GH 49824) DataFrame.to_json()现在支持mode带有受支持输入“w”和“a”的关键字。默认为 'w',当lines=True 和 orient='records' 时可以使用 'a' 将面向记录的 json 行附加到现有 json 文件。 (GH 35849) 添加了name参数IntervalIndex.from_breaks(),IntervalIndex.from_arrays()和IntervalIndex.from_tuples()( GH 48911 ) testing.assert_frame_equal()改进使用a时的异常消息DataFrame以包含比较的列(GH 50323) merge_asof()改进了连接列重复时的错误消息( GH 50102 ) 添加了对扩展数组数据类型的支持get_dummies()( GH 32430 ) 添加Index.infer_objects()类似于Series.infer_objects()( GH 50034 ) 添加copy参数到Series.infer_objects()and DataFrame.infer_objects(),传递False将避免为已经是非对象或无法推断出更好的数据类型的系列或列制作副本(GH 50096) DataFrame.plot.hist()现在认识xlabel并ylabel论证(GH 49793) Series.drop_duplicates()已获得ignore_index重置索引的关键字(GH 48304) Series.dropna()并DataFrame.dropna()获得了ignore_index重置索引的关键字(GH 31725) 改进了非 ISO8601 格式的错误消息to_datetime(),通知用户第一个错误的位置 ( GH 50361 ) 改进了尝试对齐DataFrame对象时的错误消息(例如,在 中DataFrame.compare())以澄清“标记相同”指的是索引和列 ( GH 50083 ) 添加了对pyarrow 字符串 dtypes 的支持 ( Index.min()GH 51397 )Index.max() 添加DatetimeIndex.as_unit()和TimedeltaIndex.as_unit()转换为不同的分辨率;支持的分辨率为“s”、“ms”、“us”和“ns”(GH 50616) 添加Series.dt.unit()和Series.dt.as_unit()转换为不同的分辨率;支持的分辨率为“s”、“ms”、“us”和“ns”(GH 51223) 添加了新参数dtype以read_sql()保持一致read_sql_query()(GH 50797) read_csv()、read_table()、read_fwf()现在read_excel()接受date_format( GH 50601 ) to_datetime()现在接受"ISO8601"作为 的参数format,它将匹配任何 ISO8601 字符串(但格式可能不相同)(GH 50411) to_datetime()现在接受"mixed"作为 的参数format,它将单独推断每个元素的格式(GH 50972) 添加了新参数engine以read_json()支持通过指定engine="pyarrow"( GH 48893 )使用 pyarrow 解析 JSON 添加了对 SQLAlchemy 2.0 ( GH 40686 )的支持 添加了对decimal参数的支持(GH 51302)engine="pyarrow"read_csv() Index设置操作Index.union()、Index.intersection()、Index.difference()、Index.symmetric_difference()现在支持sort=True,它将始终返回排序结果,这与默认情况不同,默认sort=None情况在某些情况下不排序(GH 25151) 添加了新的转义模式“latex-math”以避免在格式化程序中转义“$”(GH 50040) 值得注意的错误修复# 这些错误修复可能会带来显着的行为变化。 DataFrameGroupBy.cumsum()并DataFrameGroupBy.cumprod()溢出而不是有损转换为浮动# 在以前的版本中,我们在应用时强制转换为 float cumsum,cumprod这会导致错误的结果,即使结果可以由int64dtype 保存。此外,当达到的限制时, 聚合溢出与 numpy 和常规方法一致 DataFrame.cumprod()(GH 37493)。DataFrame.cumsum()int64 旧行为 In [1]: df = pd.DataFrame({"key": ["b"] * 7, "value": 625}) In [2]: df.groupby("key")["value"].cumprod()[5] Out[2]: 5.960464477539062e+16 我们返回第 6 个值的错误结果。 新行为 In [19]: df = pd.DataFrame({"key": ["b"] * 7, "value": 625}) In [20]: df.groupby("key")["value"].cumprod() Out[20]: 0 625 1 390625 2 244140625 3 152587890625 4 95367431640625 5 59604644775390625 6 359414837200037393 Name: value, dtype: int64 我们溢出了第 7 个值,但第 6 个值仍然是正确的。 DataFrameGroupBy.nth()现在SeriesGroupBy.nth()充当过滤# 在 pandas 的早期版本中,DataFrameGroupBy.nth()和 SeriesGroupBy.nth()的行为就好像它们是聚合一样。但是,对于大多数输入n,它们可能每组返回零行或多行。这意味着它们是过滤,类似于例如DataFrameGroupBy.head()。 pandas 现在将它们视为过滤(GH 13666)。 In [21]: df = pd.DataFrame({"a": [1, 1, 2, 1, 2], "b": [np.nan, 2.0, 3.0, 4.0, 5.0]}) In [22]: gb = df.groupby("a") 旧行为 In [5]: gb.nth(n=1) Out[5]: A B 1 1 2.0 4 2 5.0 新行为 In [23]: gb.nth(n=1) Out[23]: a b 1 1 2.0 4 2 5.0 特别是,结果的索引是通过选择适当的行从输入中导出的。此外,当n大于组时,不会 NaN返回任何行。 旧行为 In [5]: gb.nth(n=3, dropna="any") Out[5]: B A 1 NaN 2 NaN 新行为 In [24]: gb.nth(n=3, dropna="any") Out[24]: Empty DataFrame Columns: [a, b] Index: [] 向后不兼容的 API 更改# 使用 datetime64 或 timedelta64 dtype 进行构造,分辨率不受支持# 在过go的版本中,当构造SeriesorDataFrame并传递具有不支持的分辨率(即“ns”以外的任何内容)的“datetime64”或“timedelta64”数据类型时,pandas 会默默地用其纳秒类似物替换给定的数据类型: 以前的行为: In [5]: pd.Series(["2016-01-01"], dtype="datetime64[s]") Out[5]: 0 2016-01-01 dtype: datetime64[ns] In [6] pd.Series(["2016-01-01"], dtype="datetime64[D]") Out[6]: 0 2016-01-01 dtype: datetime64[ns] 在 pandas 2.0 中,我们支持分辨率“s”、“ms”、“us”和“ns”。当传递受支持的数据类型(例如“datetime64[s]”)时,结果现在完全具有所请求的数据类型: 新行为: In [25]: pd.Series(["2016-01-01"], dtype="datetime64[s]") Out[25]: 0 2016-01-01 dtype: datetime64[s] 对于不支持的数据类型,pandas 现在会引发而不是默默地交换支持的数据类型: 新行为: In [26]: pd.Series(["2016-01-01"], dtype="datetime64[D]") --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[26], line 1 ----> 1 pd.Series(["2016-01-01"], dtype="datetime64[D]") File ~/work/pandas/pandas/pandas/core/series.py:584, in Series.__init__(self, data, index, dtype, name, copy, fastpath) 582 data = data.copy() 583 else: --> 584 data = sanitize_array(data, index, dtype, copy) 586 manager = _get_option("mode.data_manager", silent=True) 587 if manager == "block": File ~/work/pandas/pandas/pandas/core/construction.py:651, in sanitize_array(data, index, dtype, copy, allow_2d) 648 subarr = np.array([], dtype=np.float64) 650 elif dtype is not None: --> 651 subarr = _try_cast(data, dtype, copy) 653 else: 654 subarr = maybe_convert_platform(data) File ~/work/pandas/pandas/pandas/core/construction.py:811, in _try_cast(arr, dtype, copy) 806 return lib.ensure_string_array(arr, convert_na_value=False, copy=copy).reshape( 807 shape 808 ) 810 elif dtype.kind in "mM": --> 811 return maybe_cast_to_datetime(arr, dtype) 813 # GH#15832: Check if we are requesting a numeric dtype and 814 # that we can convert the data to the requested dtype. 815 elif dtype.kind in "iu": 816 # this will raise if we have e.g. floats File ~/work/pandas/pandas/pandas/core/dtypes/cast.py:1219, in maybe_cast_to_datetime(value, dtype) 1215 raise TypeError("value must be listlike") 1217 # TODO: _from_sequence would raise ValueError in cases where 1218 # _ensure_nanosecond_dtype raises TypeError -> 1219 _ensure_nanosecond_dtype(dtype) 1221 if lib.is_np_dtype(dtype, "m"): 1222 res = TimedeltaArray._from_sequence(value, dtype=dtype) File ~/work/pandas/pandas/pandas/core/dtypes/cast.py:1276, in _ensure_nanosecond_dtype(dtype) 1273 raise ValueError(msg) 1274 # TODO: ValueError or TypeError? existing test 1275 # test_constructor_generic_timestamp_bad_frequency expects TypeError -> 1276 raise TypeError( 1277 f"dtype={dtype} is not supported. Supported resolutions are 's', " 1278 "'ms', 'us', and 'ns'" 1279 ) TypeError: dtype=datetime64[D] is not supported. Supported resolutions are 's', 'ms', 'us', and 'ns' 值计数将结果名称设置为count# 在过go的版本中,运行时Series.value_counts(),结果将继承原始对象的名称,并且结果索引将是无名的。这会在重置索引时造成混乱,并且列名与列值不对应。现在,结果名称将为'count'(或者'proportion'如果已传递),并且索引将以原始对象( GH 49497normalize=True )命名。 以前的行为: In [8]: pd.Series(['quetzal', 'quetzal', 'elk'], name='animal').value_counts() Out[2]: quetzal 2 elk 1 Name: animal, dtype: int64 新行为: In [27]: pd.Series(['quetzal', 'quetzal', 'elk'], name='animal').value_counts() Out[27]: animal quetzal 2 elk 1 Name: count, dtype: int64 对于其他value_counts方法也是如此(例如DataFrame.value_counts())。 禁止将 astype 转换为不支持的 datetime64/timedelta64 dtypes # 在以前的版本中,将 aSeries或DataFrame from转换datetime64[ns]为不同的datetime64[X]dtype 将返回datetime64[ns]dtype 而不是请求的 dtype。在 pandas 2.0 中,添加了对“datetime64[s]”、“datetime64[ms]”和“datetime64[us]”数据类型的支持,因此转换为这些数据类型可以准确地给出所请求的数据类型: 以前的行为: In [28]: idx = pd.date_range("2016-01-01", periods=3) In [29]: ser = pd.Series(idx) 以前的行为: In [4]: ser.astype("datetime64[s]") Out[4]: 0 2016-01-01 1 2016-01-02 2 2016-01-03 dtype: datetime64[ns] 通过新的行为,我们得到了所请求的数据类型: 新行为: In [30]: ser.astype("datetime64[s]") Out[30]: 0 2016-01-01 1 2016-01-02 2 2016-01-03 dtype: datetime64[s] 对于不支持的分辨率,例如“datetime64[D]”,我们提出而不是默默地忽略请求的数据类型: 新行为: In [31]: ser.astype("datetime64[D]") --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[31], line 1 ----> 1 ser.astype("datetime64[D]") File ~/work/pandas/pandas/pandas/core/generic.py:6643, in NDFrame.astype(self, dtype, copy, errors) 6637 results = [ 6638 ser.astype(dtype, copy=copy, errors=errors) for _, ser in self.items() 6639 ] 6641 else: 6642 # else, only a single dtype is given -> 6643 new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors) 6644 res = self._constructor_from_mgr(new_data, axes=new_data.axes) 6645 return res.__finalize__(self, method="astype") File ~/work/pandas/pandas/pandas/core/internals/managers.py:430, in BaseBlockManager.astype(self, dtype, copy, errors) 427 elif using_copy_on_write(): 428 copy = False --> 430 return self.apply( 431 "astype", 432 dtype=dtype, 433 copy=copy, 434 errors=errors, 435 using_cow=using_copy_on_write(), 436 ) File ~/work/pandas/pandas/pandas/core/internals/managers.py:363, in BaseBlockManager.apply(self, f, align_keys, **kwargs) 361 applied = b.apply(f, **kwargs) 362 else: --> 363 applied = getattr(b, f)(**kwargs) 364 result_blocks = extend_blocks(applied, result_blocks) 366 out = type(self).from_blocks(result_blocks, self.axes) File ~/work/pandas/pandas/pandas/core/internals/blocks.py:758, in Block.astype(self, dtype, copy, errors, using_cow, squeeze) 755 raise ValueError("Can not squeeze with more than one column.") 756 values = values[0, :] # type: ignore[call-overload] --> 758 new_values = astype_array_safe(values, dtype, copy=copy, errors=errors) 760 new_values = maybe_coerce_values(new_values) 762 refs = None File ~/work/pandas/pandas/pandas/core/dtypes/astype.py:237, in astype_array_safe(values, dtype, copy, errors) 234 dtype = dtype.numpy_dtype 236 try: --> 237 new_values = astype_array(values, dtype, copy=copy) 238 except (ValueError, TypeError): 239 # e.g. _astype_nansafe can fail on object-dtype of strings 240 # trying to convert to float 241 if errors == "ignore": File ~/work/pandas/pandas/pandas/core/dtypes/astype.py:179, in astype_array(values, dtype, copy) 175 return values 177 if not isinstance(values, np.ndarray): 178 # i.e. ExtensionArray --> 179 values = values.astype(dtype, copy=copy) 181 else: 182 values = _astype_nansafe(values, dtype, copy=copy) File ~/work/pandas/pandas/pandas/core/arrays/datetimes.py:739, in DatetimeArray.astype(self, dtype, copy) 737 elif isinstance(dtype, PeriodDtype): 738 return self.to_period(freq=dtype.freq) --> 739 return dtl.DatetimeLikeArrayMixin.astype(self, dtype, copy) File ~/work/pandas/pandas/pandas/core/arrays/datetimelike.py:494, in DatetimeLikeArrayMixin.astype(self, dtype, copy) 490 elif (dtype.kind in "mM" and self.dtype != dtype) or dtype.kind == "f": 491 # disallow conversion between datetime/timedelta, 492 # and conversions for any datetimelike to float 493 msg = f"Cannot cast {type(self).__name__} to dtype {dtype}" --> 494 raise TypeError(msg) 495 else: 496 return np.asarray(self, dtype=dtype) TypeError: Cannot cast DatetimeArray to dtype datetime64[D] 对于从timedelta64[ns]数据类型的转换,旧行为转换为浮点格式。 以前的行为: In [32]: idx = pd.timedelta_range("1 Day", periods=3) In [33]: ser = pd.Series(idx) 以前的行为: In [7]: ser.astype("timedelta64[s]") Out[7]: 0 86400.0 1 172800.0 2 259200.0 dtype: float64 In [8]: ser.astype("timedelta64[D]") Out[8]: 0 1.0 1 2.0 2 3.0 dtype: float64 对于 datetime64,新行为要么准确给出请求的 dtype,要么引发: 新行为: In [34]: ser.astype("timedelta64[s]") Out[34]: 0 1 days 1 2 days 2 3 days dtype: timedelta64[s] In [35]: ser.astype("timedelta64[D]") --------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[35], line 1 ----> 1 ser.astype("timedelta64[D]") File ~/work/pandas/pandas/pandas/core/generic.py:6643, in NDFrame.astype(self, dtype, copy, errors) 6637 results = [ 6638 ser.astype(dtype, copy=copy, errors=errors) for _, ser in self.items() 6639 ] 6641 else: 6642 # else, only a single dtype is given -> 6643 new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors) 6644 res = self._constructor_from_mgr(new_data, axes=new_data.axes) 6645 return res.__finalize__(self, method="astype") File ~/work/pandas/pandas/pandas/core/internals/managers.py:430, in BaseBlockManager.astype(self, dtype, copy, errors) 427 elif using_copy_on_write(): 428 copy = False --> 430 return self.apply( 431 "astype", 432 dtype=dtype, 433 copy=copy, 434 errors=errors, 435 using_cow=using_copy_on_write(), 436 ) File ~/work/pandas/pandas/pandas/core/internals/managers.py:363, in BaseBlockManager.apply(self, f, align_keys, **kwargs) 361 applied = b.apply(f, **kwargs) 362 else: --> 363 applied = getattr(b, f)(**kwargs) 364 result_blocks = extend_blocks(applied, result_blocks) 366 out = type(self).from_blocks(result_blocks, self.axes) File ~/work/pandas/pandas/pandas/core/internals/blocks.py:758, in Block.astype(self, dtype, copy, errors, using_cow, squeeze) 755 raise ValueError("Can not squeeze with more than one column.") 756 values = values[0, :] # type: ignore[call-overload] --> 758 new_values = astype_array_safe(values, dtype, copy=copy, errors=errors) 760 new_values = maybe_coerce_values(new_values) 762 refs = None File ~/work/pandas/pandas/pandas/core/dtypes/astype.py:237, in astype_array_safe(values, dtype, copy, errors) 234 dtype = dtype.numpy_dtype 236 try: --> 237 new_values = astype_array(values, dtype, copy=copy) 238 except (ValueError, TypeError): 239 # e.g. _astype_nansafe can fail on object-dtype of strings 240 # trying to convert to float 241 if errors == "ignore": File ~/work/pandas/pandas/pandas/core/dtypes/astype.py:179, in astype_array(values, dtype, copy) 175 return values 177 if not isinstance(values, np.ndarray): 178 # i.e. ExtensionArray --> 179 values = values.astype(dtype, copy=copy) 181 else: 182 values = _astype_nansafe(values, dtype, copy=copy) File ~/work/pandas/pandas/pandas/core/arrays/timedeltas.py:358, in TimedeltaArray.astype(self, dtype, copy) 354 return type(self)._simple_new( 355 res_values, dtype=res_values.dtype, freq=self.freq 356 ) 357 else: --> 358 raise ValueError( 359 f"Cannot convert from {self.dtype} to {dtype}. " 360 "Supported resolutions are 's', 'ms', 'us', 'ns'" 361 ) 363 return dtl.DatetimeLikeArrayMixin.astype(self, dtype, copy=copy) ValueError: Cannot convert from timedelta64[ns] to timedelta64[D]. Supported resolutions are 's', 'ms', 'us', 'ns' UTC 和固定偏移时区默认为标准库 tzinfo 对象# tzinfo在以前的版本中,用于表示 UTC 的默认对象是pytz.UTC。在 pandas 2.0 中,我们默认datetime.timezone.utc改为。同样,对于表示固定 UTC 偏移量的时区,我们使用datetime.timezone 对象而不是pytz.FixedOffset对象。参见(GH 34916) 以前的行为: In [2]: ts = pd.Timestamp("2016-01-01", tz="UTC") In [3]: type(ts.tzinfo) Out[3]: pytz.UTC In [4]: ts2 = pd.Timestamp("2016-01-01 04:05:06-07:00") In [3]: type(ts2.tzinfo) Out[5]: pytz._FixedOffset 新行为: In [36]: ts = pd.Timestamp("2016-01-01", tz="UTC") In [37]: type(ts.tzinfo) Out[37]: datetime.timezone In [38]: ts2 = pd.Timestamp("2016-01-01 04:05:06-07:00") In [39]: type(ts2.tzinfo) Out[39]: datetime.timezone 对于既不是 UTC 也不是固定偏移量的时区,例如“美国/太平洋”,我们继续默认为pytz对象。 空数据框/系列现在默认有RangeIndex# 之前,构造一个空(其中dataisNone或类似空列表的参数)Series或DataFrame不指定轴 ( index=None, columns=None) 会将轴返回为Index具有对象 dtype 的空。 现在,轴返回空值RangeIndex( GH 49572 )。 以前的行为: In [8]: pd.Series().index Out[8]: Index([], dtype='object') In [9] pd.DataFrame().axes Out[9]: [Index([], dtype='object'), Index([], dtype='object')] 新行为: In [40]: pd.Series().index Out[40]: RangeIndex(start=0, stop=0, step=1) In [41]: pd.DataFrame().axes Out[41]: [RangeIndex(start=0, stop=0, step=1), RangeIndex(start=0, stop=0, step=1)] DataFrame to LaTeX 有一个新的渲染引擎# 现有的DataFrame.to_latex()已进行重组,以利用以前在 下提供的扩展实现Styler.to_latex()。参数签名是相似的,尽管它col_space已被删除,因为它被 LaTeX 引擎忽略。该渲染引擎还需要jinja2安装依赖项,因为渲染是基于 jinja2 模板的。 下面的 pandas Latex 选项不再使用并已被删除。通用的最大行数和列数参数仍然存在,但对于此功能,应由 Styler 等效项替换。提供类似功能的替代选项如下所示: display.latex.escape: 替换为styler.format.escape, display.latex.longtable: 替换为styler.latex.environment, display.latex.multicolumn,display.latex.multicolumn_format和 display.latex.multirow: 替换为styler.sparse.rows, styler.sparse.columns,styler.latex.multirow_align和 styler.latex.multicol_align, display.latex.repr: 替换为styler.render.repr, display.max_rows和display.max_columns: 替换为 styler.render.max_rows,styler.render.max_columns和 styler.render.max_elements。 请注意,由于此更改,一些默认值也发生了变化: multirow现在默认为True。 multirow_align默认为“r”而不是“l”。 multicol_align默认为“r”而不是“l”。 escape现在默认为False。 请注意, 的行为_repr_latex_也发生了变化。以前的设置display.latex.repr仅在对 JupyterNotebook 使用 nbconvert 时生成 LaTeX,而不是在用户运行笔记本时生成 LaTeX。现在,该 styler.render.repr选项允许控制 JupyterNotebooks 中的特定输出以进行操作(不仅仅是在 nbconvert 上)。参见GH 39911。 增加了依赖项的最低版本# 更新了一些依赖项的最低支持版本。如果安装了,我们现在需要: 包裹 最低版本 必需的 改变了 mypy(开发) 1.0 X pytest(开发) 7.0.0 X pytest-xdist(开发) 2.2.0 X 假设(开发) 6.34.2 X python-dateutil 2.8.2 X X 兹数据 2022.1 X X 对于可选库,一般建议使用最新版本。下表列出了当前在 pandas 开发过程中测试的每个库的最低版本。低于最低测试版本的可选库可能仍然有效,但不被视为受支持。 包裹 最低版本 改变了 皮箭头 7.0.0 X 绘图库 3.6.1 X 快速镶木地板 0.6.3 X 阵列 0.21.0 X 有关更多信息,请参阅依赖项和可选依赖项。 现在使用一致的格式解析日期时间# 过go,to_datetime()独立猜测每个元素的格式。这适用于元素具有混合日期格式的某些情况 - 但是,当用户期望一致的格式但该函数会在元素之间切换格式时,它通常会导致问题。从版本 2.0.0 开始,解析将使用一致的格式,由第一个非 NA 值确定(除非用户指定格式,在这种情况下使用该格式)。 旧行为: In [1]: ser = pd.Series(['13-01-2000', '12-01-2000']) In [2]: pd.to_datetime(ser) Out[2]: 0 2000-01-13 1 2000-12-01 dtype: datetime64[ns] 新行为: In [42]: ser = pd.Series(['13-01-2000', '12-01-2000']) In [43]: pd.to_datetime(ser) Out[43]: 0 2000-01-13 1 2000-01-12 dtype: datetime64[ns] 请注意,这read_csv()也会产生影响。 如果您仍然需要解析格式不一致的日期,您可以使用 format='mixed'(可能与 一起使用dayfirst) ser = pd.Series(['13-01-2000', '12 January 2000']) pd.to_datetime(ser, format='mixed', dayfirst=True) 或者,如果您的格式均为 ISO8601(但格式可能不相同) ser = pd.Series(['2020-01-01', '2020-01-01 03:00']) pd.to_datetime(ser, format='ISO8601') 其他 API 更改# 构造函数中的freq、tz、nanosecond和关键字现在仅是关键字(GH 45307、GH 32526)unitTimestamp 现在传递nanoseconds大于 999 或小于 0Timestamp会引发ValueError( GH 48538 , GH 48255 ) read_csv()index_col:使用of now指定错误的列数ParserError而不是IndexError使用 c 解析器时会引发。 dtypein的默认值get_dummies()更改为boolfrom uint8( GH 45848 ) DataFrame.astype()、Series.astype()以及DatetimeIndex.astype()将 datetime64 数据转换为“datetime64[s]”、“datetime64[ms]”、“datetime64[us]”中的任何一个将返回具有给定分辨率的对象,而不是强制返回“datetime64[ns]”( GH 48928) DataFrame.astype()、Series.astype()和DatetimeIndex.astype()将 timedelta64 数据转换为“timedelta64[s]”、“timedelta64[ms]”、“timedelta64[us]”中的任何一个将返回具有给定分辨率的对象,而不是强制为“float64”dtype ( GH 48963 ) DatetimeIndex.astype()、TimedeltaIndex.astype()、PeriodIndex.astype() Series.astype()、DataFrame.astype()withdatetime64或dtypes 不再允许转换为除“int64”之外的整数 dtypes,请timedelta64改为( GH 49715 )PeriodDtypeobj.astype('int64', copy=False).astype(dtype) Index.astype()现在允许从float64数据类型转换为类似日期时间的数据类型,匹配Series行为(GH 49660) 将数据类型为“timedelta64[s]”、“timedelta64[ms]”或“timedelta64[us]”的数据传递给TimedeltaIndex、Series或DataFrame构造函数现在将保留该数据类型,而不是转换为“timedelta64[ns]”;分辨率较低的 timedelta64 数据将转换为支持的最低分辨率“timedelta64[s]” ( GH 49014 ) dtype将“timedelta64[s]”、“timedelta64[ms]”或“timedelta64[us]”传递给TimedeltaIndex、Series或DataFrame构造函数现在将保留该数据类型,而不是转换为“timedelta64[ns]”;传递较低分辨率的 dtypeSeries或DataFrame将转换为支持的最低分辨率“timedelta64[s]” ( GH 49014 ) np.datetime64将非纳秒分辨率的对象传递给 ,Timestamp如果它是“s”、“ms”、“us”或“ns”,则将保留输入分辨率;否则它将被投射到最接近的支持分辨率(GH 49008) 如果输入分辨率为“s”、“ms”、“us”或“ns”,则传递datetime64除纳秒以外的分辨率的值将保留输入分辨率;to_datetime()否则它将被投射到最接近的支持分辨率(GH 50369) 传递整数值和非纳秒 datetime64 dtype(例如“datetime64[s]”)DataFrame、Series或Index会将值视为 dtype 单位的倍数,匹配例如(GH 51092)的行为Series(np.array(values, dtype="M8[s]")) 传递 ISO-8601 格式的字符串,Timestamp如果它是“s”、“ms”、“us”或“ns”,则将保留解析输入的分辨率;否则它将被转换为最接近的支持分辨率(GH 49737) andother中的参数现在默认为与and一致。条目将填充相应的 NULL 值(对于 numpy 数据类型,对于扩展数据类型)。 (GH 49111)DataFrame.mask()Series.mask()no_defaultnp.nanDataFrame.where()Series.where()np.nanpd.NA Series.quantile()更改了和DataFrame.quantile()with的行为SparseDtype以保留稀疏数据类型(GH 49583) Series当使用日期时间对象的对象数据类型创建 a 时Index,pandas 不再默默地将索引转换为 a DatetimeIndex( GH 39307,GH 23598 ) pandas.testing.assert_index_equal()exact="equiv"现在,当两个索引都是 aRangeIndex或Index具有dtype 时,with 参数认为两个索引相等int64。以前它意味着 aRangeIndex或 a Int64Index( GH 51098 ) Series.unique()dtype“timedelta64[ns]”或“datetime64[ns]”现在返回TimedeltaArray或DatetimeArray代替numpy.ndarray(GH 49176) to_datetime()现在DatetimeIndex允许包含对象和数字条目的序列datetime,匹配Series行为(GH 49037,GH 50453) pandas.api.types.is_string_dtype()现在仅在元素被推断为字符串时返回True类似数组的内容( GH 15585)dtype=object datetime将包含对象和对象的序列传递date给Series构造函数将返回objectdtype 而不是datetime64[ns]dtype,与Index行为一致(GH 49341) 将无法解析为日期时间的字符串传递给Series或DataFrame与dtype="datetime64[ns]"将引发,而不是默默地忽略关键字并返回objectdtype ( GH 24435 ) Timedelta传递包含无法转换为toto_timedelta()或Series或DataFrame构造函数的序列,dtype="timedelta64[ns]"现在TimedeltaIndex会引发TypeError而不是ValueError( GH 49525 ) 更改了构造函数的行为Index,序列包含至少一个NaT和其他所有内容,None或者NaN推断datetime64[ns]dtype 而不是object匹配Series行为(GH 49340) read_stata()参数index_col设置为None(默认)现在将返回的索引设置DataFrame为 aRangeIndex而不是 a Int64Index( GH 49745 ) 使用对象数据类型时更改了 、 和算术方法的行为,结果不再对数组操作的结果进行类型推断,而是用于Index对Series结果进行类型推断(GH 49999、GH 49714)DataFrameresult.infer_objects(copy=False) 更改了包含所有值或所有复杂值的Index对象数据类型的构造函数的行为,这现在将保留对象数据类型,与行为一致(GH 49594)numpy.ndarrayboolSeries Series.astype()将包含对象的对象数据类型更改bytes为字符串数据类型;现在,这val.decode()对字节对象执行,而不是str(val)匹配Index.astype()行为(GH 45326) 添加"None"到默认值na_values( read_csv()GH 50286 ) 当给定整数数据类型和非整数的浮点数据时,更改了Series和构造函数的行为,现在会引发而不是默默地保留浮点数据类型;执行or获取旧行为,或者获取指定的 dtype ( GH 49599 )DataFrameValueErrorSeries(data)DataFrame(data)Series(data).astype(dtype)DataFrame(data).astype(dtype) DataFrame.shift()更改了with axis=1、 integer和同质 datetime-like dtype的行为fill_value,现在用整数 dtypes 填充新列,而不是转换为 datetimelike ( GH 49842 ) read_json()现在,在( GH 49921 )中遇到异常时,文件会被关闭 read_csv()更改了, read_json()&的行为,当未指定索引时,read_fwf()索引现在始终为 a 。以前,如果新 DataFrame/Series 的长度为 0 ( GH 49572 ),RangeIndex则索引将为Indexdtypeobject DataFrame.values()、、、、、、不再默默地整合底层数组DataFrame.to_numpy();确保整合(GH 49356)DataFrame.xs()DataFrame.reindex()DataFrame.fillna()DataFrame.replace()df = df.copy() loc 使用or iloc(因此,或)在两个轴上使用完整切片创建新的 DataFrame现在返回一个新的 DataFrame (浅拷贝)而不是原始 DataFrame,与获取完整切片的其他方法一致(例如或)( GH 49469)df.loc[:, :]df.iloc[:, :]df.loc[:]df[:] Series当分别传递 Series 和 DataFrame 时, 和构造DataFrame函数将返回浅拷贝(即共享数据,但不共享属性),并且默认为copy=False(并且如果没有其他关键字触发复制)。以前,新的 Series 或 DataFrame 将共享索引属性(例如, 还将更新父级或子级的索引)(GH 49523)df.index = ... 禁止cumprod对象计算Timedelta;以前这返回了不正确的值(GH 50246) DataFrameHDFStore从没有索引的文件读取的对象现在有一个RangeIndex而不是int64索引(GH 51076) 使用包含和/或现在的Index数据的数字 numpy dtype实例化 an会引发.之前提出了 a ( GH 51050 )NANaTValueErrorTypeError 使用重命名列来加载包含重复列的 JSON 文件read_json(orient='split')以避免重复,就像read_csv()其他读者所做的那样 ( GH 50370 ) Series从现在开始返回的索引的级别Series.sparse.from_coo始终具有 dtype int32。以前他们有 dtype int64( GH 50926 ) to_datetime()unit如果序列包含非舍入值,则“Y”或“M”现在将引发,float匹配Timestamp行为(GH 50301) 方法Series.round(), DataFrame.__invert__(), Series.__invert__(), DataFrame.swapaxes(), DataFrame.first(), , DataFrame.last(),Series.first()和Series.last()现在DataFrame.align()将始终返回新对象 ( GH 51032 ) DataFrame对象数据类型列的聚合DataFrameGroupBy(例如“sum”)不再推断其结果的非对象数据类型,显式调用result.infer_objects(copy=False)结果以获得旧行为(GH 51205、GH 49603) 用ArrowDtypedtypes 除以零会返回-inf, nan, 或 ,inf具体取决于分子,而不是提高 ( GH 51541 ) 添加pandas.api.types.is_any_real_numeric_dtype()以检查真实数字 dtypes ( GH 51152 ) value_counts()ArrowDtype现在返回带有pyarrow.int64类型而不是类型的数据"Int64"(GH 51462) factorize()并unique()在以非纳秒分辨率传递 numpy timedelta64 或 datetime64 时保留原始数据类型(GH 48670) 笔记 当前的 PDEP 建议弃用和删除关键字inplace以及copy pandas API 中除一小部分方法之外的所有方法。当前的讨论就在这里进行。在写入时复制的上下文中不再需要关键字。如果该提案被接受,这两个关键字将在 pandas 的下一个版本中被弃用,并在 pandas 3.0 中删除。 弃用# 不推荐使用系统本地时区解析日期时间字符串tzlocal,而是传递tz关键字或显式调用tz_localize(GH 50791) 和infer_datetime_format中已弃用的参数,作为它的严格版本现在是默认值(GH 48621)to_datetime()read_csv() to_datetime()解析字符串时已弃用with的行为unit,在未来版本中,这些行为将被解析为日期时间(匹配无单位行为),而不是转换为浮点数。要保留旧的行为,请在调用之前将字符串转换为数字类型to_datetime()(GH 50735) 已弃用pandas.io.sql.execute()(GH 50185) Index.is_boolean()已被弃用。使用pandas.api.types.is_bool_dtype()(GH 50042) Index.is_integer()已被弃用。使用pandas.api.types.is_integer_dtype()(GH 50042) Index.is_floating()已被弃用。使用pandas.api.types.is_float_dtype()(GH 50042) Index.holds_integer()已被弃用。使用pandas.api.types.infer_dtype()替代(GH 50243) Index.is_numeric()已被弃用。改用pandas.api.types.is_any_real_numeric_dtype()(GH 50042,:问题:51152) Index.is_categorical()已被弃用。使用pandas.api.types.is_categorical_dtype()(GH 50042) Index.is_object()已被弃用。使用pandas.api.types.is_object_dtype()(GH 50042) Index.is_interval()已被弃用。使用pandas.api.types.is_interval_dtype()(GH 50042) date_parser已弃用read_csv()、read_table()、read_fwf()和read_excel()中的参数,赞成date_format( GH 50601 ) 已弃用all并any减少datetime64和DatetimeTZDtypedtypes,请使用 eg代替 ( GH 34479 )(obj != pd.Timestamp(0), tz=obj.tz).all() 已弃用未使用的参数*args和( **kwargsGH 50977 )Resampler 已弃用在单个元素上调用floator来分别返回or 。在调用之前提取元素或改为(GH 51101)intSeriesfloatintfloatint 已弃用Grouper.groups(),请Groupby.groups()改用 ( GH 51182 ) 已弃用Grouper.grouper(),请Groupby.grouper()改用 ( GH 51182 ) 已弃用Grouper.obj(),请Groupby.obj()改用 ( GH 51206 ) 已弃用Grouper.indexer(),请Resampler.indexer()改用 ( GH 51206 ) 已弃用Grouper.ax(),请Resampler.ax()改用 ( GH 51206 ) use_nullable_dtypes已弃用关键字read_parquet(),请dtype_backend改用 ( GH 51853 ) 已弃用Series.pad(),取而代之的是Series.ffill()(GH 33396) 已弃用Series.backfill(),取而代之的是Series.bfill()(GH 33396) 已弃用DataFrame.pad(),取而代之的是DataFrame.ffill()(GH 33396) 已弃用DataFrame.backfill(),取而代之的是DataFrame.bfill()(GH 33396) 已弃用close()。用作StataReader上下文管理器(GH 49228) 不推荐在迭代 aDataFrameGroupBy或 a时生成标量SeriesGroupBy,该 a 或 a 已按level长度为 1 的列表的参数分组;将返回长度为 1 的元组 ( GH 51583 ) 删除先前版本的弃用/更改# 删除了Int64Index,UInt64Index和Float64Index。另请参阅此处了解更多信息 ( GH 42717 ) 从构造函数中删除了已弃用的Timestamp.freq,Timestamp.freqstr和 参数( GH 14146 )freqTimestampTimestamp.fromordinal() 删除了已弃用的CategoricalBlock, Block.is_categorical(),要求将 datetime64 和 timedelta64 值包装在传递给 之前DatetimeArray或之前,要求传递给构造函数时具有正确的 ndim ,并从构造函数中删除了“fastpath”关键字(GH 40226、GH 40571)TimedeltaArrayBlock.make_block_same_class()DatetimeTZBlock.valuesBlockManagerSingleBlockManager 删除了已弃用的全局选项,use_inf_as_null以支持use_inf_as_na( GH 17126 ) 删除了已弃用的模块pandas.core.index(GH 30193) 删除了已弃用的别名pandas.core.tools.datetimes.to_time,直接导入函数pandas.core.tools.times(GH 34145) 删除了已弃用的别名pandas.io.json.json_normalize,直接导入函数pandas.json_normalize(GH 27615) 删除已弃用的Categorical.to_dense(),改用np.asarray(cat)(GH 32639) 删除已弃用Categorical.take_nd()(GH 27745) 删除已弃用的Categorical.mode(),改用Series(cat).mode()(GH 45033) 删除了已弃用的Categorical.is_dtype_equal()和CategoricalIndex.is_dtype_equal()(GH 37545) 删除已弃用CategoricalIndex.take_nd()( GH 30702 ) 删除已弃用Index.is_type_compatible()(GH 42113) 删除已弃用Index.is_mixed(),index.inferred_type直接检查(GH 32922) 删除已弃用pandas.api.types.is_categorical();使用pandas.api.types.is_categorical_dtype()(GH 33385) 删除已弃用Index.asi8()(GH 37877) datetime64[ns]将 dtype 数据和时区感知 dtype传递给 时强制弃用更改行为Series,将值解释为 wall-time 而不是 UTC 时间,匹配DatetimeIndex行为 ( GH 41662 ) 在多个非对齐(在索引或列上)上应用 numpy ufunc 时强制弃用更改行为,DataFrame现在将首先对齐输入(GH 39239) 删除了已弃用的DataFrame._AXIS_NUMBERS(), DataFrame._AXIS_NAMES(), Series._AXIS_NUMBERS(), Series._AXIS_NAMES()( GH 33637 ) 已删除已弃用的Index.to_native_types(),obj.astype(str)请改为使用(GH 36418) 删除了已弃用的Series.iteritems(), DataFrame.iteritems(),obj.items改为使用 ( GH 45321 ) 删除已弃用的DataFrame.lookup()(GH 35224) 删除了已弃用的Series.append(), DataFrame.append(),concat()改为使用 ( GH 35407 ) 删除已弃用的Series.iteritems(),DataFrame.iteritems()并HDFStore.iteritems()改用obj.items(GH 45321) 删除已弃用DatetimeIndex.union_many()(GH 45018) 删除了 和 的已弃用属性和访问weekofyear器,以支持( GH 33595 )weekDatetimeArrayDatetimeIndexdtisocalendar().week 删除了已弃用的RangeIndex._start(), RangeIndex._stop(), RangeIndex._step(), 使用start, stop,step代替 ( GH 30482 ) 删除已弃用的DatetimeIndex.to_perioddelta(),改用(GH 34853)dtindex - dtindex.to_period(freq).to_timestamp() 删除了已弃用的Styler.hide_index()和Styler.hide_columns()(GH 49397) 删除了已弃用的Styler.set_na_rep()和Styler.set_precision()(GH 49397) 删除已弃用Styler.where()(GH 49397) 删除已弃用Styler.render()(GH 49397) 删除了( GH 47970 )col_space中已弃用的参数DataFrame.to_latex() 删除了( GH 49397 )null_color中已弃用的参数Styler.highlight_null() 删除了, , , ( GH 30562 )check_less_precise中已弃用的参数testing.assert_frame_equal()testing.assert_extension_array_equal()testing.assert_series_equal()testing.assert_index_equal() 删除了null_counts中已弃用的参数DataFrame.info()。使用show_counts替代(GH 37999) 删除了已弃用的Index.is_monotonic(), 和Series.is_monotonic();使用obj.is_monotonic_increasing(GH 45422) 删除已弃用Index.is_all_dates()( GH 36697 ) 强制弃用,不允许将时区感知的Timestamp和传递dtype="datetime64[ns]"给Series或DataFrame构造函数(GH 41555) 强制弃用,不允许将时区感知值序列传递dtype="datetime64[ns]"给Series或DataFrame构造函数(GH 41555) numpy.ma.mrecords.MaskedRecords构造函数中不允许强制弃用DataFrame;通过(GH 40363)"{name: data[name] for name in data.dtype.names} Series.astype()强制弃用,不允许在和DataFrame.astype()( GH 47844 )中使用无单位“datetime64”数据类型 强制弃用,不允许使用将、或.astype转换为时区感知数据类型,请使用或代替(GH 39258)datetime64[ns] SeriesDataFrameDatetimeIndexobj.tz_localizeser.dt.tz_localize 强制弃用,不允许使用.astype将时区感知Series、DataFrame或转换DatetimeIndex为时区原生datetime64[ns]数据类型,请使用obj.tz_localize(None)或obj.tz_convert("UTC").tz_localize(None)代替(GH 39258) 强制弃用不允许传递非布尔参数进行排序concat()(GH 44629) 删除了日期解析器函数parse_date_time()、 parse_date_fields()和parse_all_fields() (generic_parser()GH 24518) index从构造函数中删除了参数core.arrays.SparseArray(GH 43523) squeeze从DataFrame.groupby()and中删除参数Series.groupby()(GH 32380) 从( GH 34171 )中删除了已弃用的apply、apply_index、__call__、onOffset和isAnchored属性DateOffset 删除了( GH 29731 )keep_tz中的参数DatetimeIndex.to_series() 删除参数namesand dtypefromIndex.copy()和levelsand codesfrom MultiIndex.copy()( GH 35853 , GH 36685 ) inplace从MultiIndex.set_levels()and中删除参数MultiIndex.set_codes()(GH 35626) 从and中删除了参数verboseand ( GH 47912 )encodingDataFrame.to_excel()Series.to_excel() line_terminator从DataFrame.to_csv()and中删除了参数Series.to_csv(),改用lineterminator( GH 45302 ) inplace从DataFrame.set_axis()and中删除了参数Series.set_axis(),改用( GH 48130 )obj = obj.set_axis(..., copy=False) 禁止将位置参数传递给MultiIndex.set_levels()and MultiIndex.set_codes()( GH 41485 ) 禁止解析为包含单位为“Y”、“y”或“M”的组件的 Timedelta 字符串,因为这些不代表明确的持续时间(GH 36838) 删除MultiIndex.is_lexsorted()并MultiIndex.lexsort_depth()(GH 38701) how删除了参数PeriodIndex.astype(),改用PeriodIndex.to_timestamp()(GH 37982) 删除了、和( GH 38836 )try_cast中的参数DataFrame.mask()DataFrame.where()Series.mask()Series.where() tz删除了参数Period.to_timestamp(),改用obj.to_timestamp(...).tz_localize(tz)(GH 34522) 删除了andsort_columns中的参数(GH 47563)DataFrame.plot()Series.plot() 删除了andis_copy的参数(GH 30615)DataFrame.take()Series.take() 删除了,和( GH 41378 )kind中的参数Index.get_slice_bound()Index.slice_indexer()Index.slice_locs() 从(GH 40413、GH 43427)中删除了参数prefix、squeeze、error_bad_lines和warn_bad_linesread_csv() squeeze从read_excel()( GH 43427 )中删除了参数 datetime_is_numeric从日期时间数据DataFrame.describe()中删除的参数Series.describe()将始终汇总为数字数据(GH 34798) 禁止将列表传递key给Series.xs()and DataFrame.xs(),而是传递元组(GH 41789) 构造函数中不允许使用特定于子类的关键字(例如“freq”、“tz”、“names”、“close”)Index(GH 38597) inplace从Categorical.remove_unused_categories()( GH 37918 )中删除了参数 Timestamp禁止使用unit="M"or unit="Y"( GH 47266 )传递非圆形浮点数 删除关键字convert_floatand mangle_dupe_colsfrom read_excel()( GH 41176 ) mangle_dupe_cols从read_csv()and中删除关键字read_table()( GH 48137 ) 从, ,和( GH 47728 )中删除了errors关键字DataFrame.where()Series.where()DataFrame.mask()Series.mask() 禁止将非关键字参数传递给read_excel()except ioand sheet_name( GH 34418 ) 禁止将非关键字参数传递给DataFrame.drop()and Series.drop()except labels( GH 41486 ) 禁止将非关键字参数传递给DataFrame.fillna()and Series.fillna()except value( GH 41485 ) 禁止将非关键字参数传递给StringMethods.split()(GH 47448)StringMethods.rsplit()pat 禁止将非关键字参数传递给DataFrame.set_index()except keys( GH 41495 ) 禁止将非关键字参数传递给Resampler.interpolate()except method( GH 41699 ) 禁止将非关键字参数传递给DataFrame.reset_index()and Series.reset_index()except level( GH 41496 ) 禁止将非关键字参数传递给DataFrame.dropna()and Series.dropna()( GH 41504 ) 禁止将非关键字参数传递给ExtensionArray.argsort()( GH 46134 ) 禁止将非关键字参数传递给Categorical.sort_values()( GH 47618 ) 禁止将非关键字参数传递给Index.drop_duplicates()and Series.drop_duplicates()( GH 41485 ) 禁止将非关键字参数传递给DataFrame.drop_duplicates()except for subset( GH 41485 ) 禁止将非关键字参数传递给DataFrame.sort_index()and Series.sort_index()( GH 41506 ) 禁止将非关键字参数传递给DataFrame.interpolate()(GH 41510)Series.interpolate()method 禁止将非关键字参数传递给DataFrame.any()and Series.any()( GH 44896 ) 禁止将非关键字参数传递给Index.set_names()except for names( GH 41551 ) 禁止将非关键字参数传递给Index.join()except for other( GH 46518 ) 禁止将非关键字参数传递给concat()except for objs( GH 41485 ) 禁止将非关键字参数传递给pivot()except for data( GH 48301 ) 禁止将非关键字参数传递给DataFrame.pivot()( GH 48301 ) 禁止将非关键字参数传递给read_html()except for io( GH 27573 ) 禁止将非关键字参数传递给read_json()except for path_or_buf( GH 27573 ) 禁止将非关键字参数传递给read_sas()except for filepath_or_buffer( GH 47154 ) 禁止将非关键字参数传递给read_stata()except for filepath_or_buffer( GH 48128 ) 禁止将非关键字参数传递给read_csv()except filepath_or_buffer( GH 41485 ) 禁止将非关键字参数传递给read_table()except filepath_or_buffer( GH 41485 ) 禁止将非关键字参数传递给read_fwf()except filepath_or_buffer( GH 44710 ) 禁止将非关键字参数传递给read_xml()except for path_or_buffer( GH 45133 ) 禁止将非关键字参数传递给Series.mask()and DataFrame.mask()except condand other( GH 41580 ) 禁止将非关键字参数传递给DataFrame.to_stata()except for path( GH 48128 ) 禁止将非关键字参数传递给DataFrame.where()andSeries.where()除了condand other( GH 41523 ) 禁止将非关键字参数传递给Series.set_axis()(GH 41491)DataFrame.set_axis()labels 禁止将非关键字参数传递给Series.rename_axis()(GH 47587)DataFrame.rename_axis()mapper 禁止将非关键字参数传递给Series.clip()and DataFrame.clip()except lowerand upper( GH 41511 ) 禁止将非关键字参数传递给Series.bfill()、Series.ffill()和DataFrame.bfill()( DataFrame.ffill()GH 41508 ) 禁止将非关键字参数传递给DataFrame.replace(),Series.replace()除了to_replaceand value( GH 47587 ) 禁止将非关键字参数传递给DataFrame.sort_values()except for by( GH 41505 ) 禁止将非关键字参数传递给Series.sort_values()( GH 41505 ) 禁止将非关键字参数传递给DataFrame.reindex()except for labels( GH 17966 ) 禁止Index.reindex()使用非唯一Index对象(GH 42568) 不允许Categorical使用标量进行构造data(GH 38433) CategoricalIndex未经通过不得施工data(GH 38944) 删除了Rolling.validate(), Expanding.validate(), 和ExponentialMovingWindow.validate()( GH 43665 ) 删除Rolling.win_type返回"freq"(GH 38963) 已删除Rolling.is_datetimelike(GH 38963) 删除了level关键字 inDataFrame和Series聚合;使用groupby(GH 39983) 删除了已弃用的Timedelta.delta(), Timedelta.is_populated(), 和Timedelta.freq( GH 46430 , GH 46476 ) 删除已弃用NaT.freq(GH 45071) 已删除已弃用Categorical.replace(),Series.replace()请改为使用(GH 44929) 删除了numeric_only关键字Categorical.min()并Categorical.max()支持skipna( GH 48821 ) DataFrame.median()更改了和 with的行为,DataFrame.mean()以numeric_only=None不排除类似日期时间的列,一旦numeric_only=None强制弃用,此注释将变得无关紧要(GH 29941) 删除is_extension_type()以支持is_extension_array_dtype()( GH 29457 ) 已删除.ExponentialMovingWindow.vol(GH 39220) 删除Index.get_value()并Index.set_value()(GH 33907,GH 28621) 删除Series.slice_shift()并DataFrame.slice_shift()(GH 37601) 删除DataFrameGroupBy.pad()并DataFrameGroupBy.backfill()(GH 45076) 从( GH 30636 )中删除numpy参数read_json() orient禁止传递in的缩写DataFrame.to_dict()( GH 32516 ) DatetimeIndex禁止使用不在索引中的键对非单调进行部分切片。现在这提出了KeyError(GH 18531) 删除get_offset以支持to_offset()( GH 30340 ) 删除了( GH 45947 )warn中的关键字infer_freq() 删除了支持( GH 43248 )的include_start和include_end论点DataFrame.between_time()inclusive 删除了closed论证date_range()并bdate_range()赞成inclusive论证(GH 40245) 删除了( GH 20647 )center中的关键字DataFrame.expanding() truediv从eval()( GH 29812 )中删除了关键字 删除了中的method和tolerance参数Index.get_loc()。使用替代(GH 42269)index.get_indexer([label], method=..., tolerance=...) 删除了pandas.datetime子模块(GH 30489) 删除了pandas.np子模块(GH 30296) 删除pandas.util.testing以支持pandas.testing( GH 30745 ) 已删除Series.str.__iter__()(GH 28277) 删除pandas.SparseArray以支持arrays.SparseArray( GH 30642 ) 删除了pandas.SparseSeries和pandas.SparseDataFrame,包括 pickle 支持。 (GH 30642) 强制禁止将整数传递给fill_valuedatetime64 、timedelta64 或 period dtypes(GH 32591)DataFrame.shift()Series.shift`() 强制禁止将字符串列标签放入(GH 43265)times中DataFrame.ewm() 强制禁止通过True和False进入分别inclusive有Series.between()利于"both"和"neither"(GH 40628) 强制禁止使用usecolswith 越界索引read_csv( engine="c"GH 25623 ) 强制禁止使用**kwargsin ExcelWriter;使用关键字参数engine_kwargs代替(GH 40430) 强制禁止将列标签元组放入DataFrameGroupBy.__getitem__()(GH 30546) 在使用 a 级别上的标签序列进行索引时,强制禁止丢失标签MultiIndex。现在这提出了KeyError(GH 42351) 强制禁止.loc使用位置切片设置值。.loc与标签或.iloc位置一起使用( GH 31840 ) 强制禁止使用float键进行位置索引,即使该键是整数,而是手动转换为整数(GH 34193) 强制禁止使用DataFrame索引器.iloc,.loc而是使用索引器进行自动对齐(GH 39022) 强制禁止set或方法dict中的索引器(GH 42825)__getitem____setitem__ 强制禁止对生成的多维对象进行索引Index或位置索引,例如,在索引之前转换为 numpy ( GH 35141 )Seriesobj[:, None] 强制禁止dict或set将物品放入suffixes(merge()GH 34810) 强制禁止通过关键字和已存在的列merge()生成重复的列( GH 22818)suffixes 强制禁止使用merge()或join()在不同数量的级别上(GH 34862) 强制禁止value_name参数DataFrame.melt()匹配列中的元素DataFrame(GH 35003) 强制禁止showindex传递**kwargs并支持(GH 33091DataFrame.to_markdown())Series.to_markdown()index 直接删除了设置 Categorical._codes ( GH 41429 ) 直接删除了设置 Categorical.categories ( GH 47834 ) 删除了inplace参数Categorical.add_categories(),,,,,,,,,, ( GH 37981 , GH 41118Categorical.remove_categories() , GHCategorical.set_categories() 41133 , GH 47834 Categorical.rename_categories())Categorical.reorder_categories()Categorical.set_ordered()Categorical.as_ordered()Categorical.as_unordered() 强制Rolling.count()默认min_periods=None为窗口大小(GH 31302) 重命名fname为,path和( GH 30338 )DataFrame.to_parquet()DataFrame.to_stata()DataFrame.to_feather() 强制禁止使用Series带切片的单个项目列表对 a 进行索引(例如)。要么将列表转换为元组,要么直接传递切片(GH 31333)ser[[slice(0, 2)]] DataFrame更改了使用字符串索引器对 a 进行索引的行为DatetimeIndex,以前它作为行上的切片进行操作,现在它像任何其他列键一样操作;用于frame.loc[key]旧行为(GH 36179) 强制display.max_colwidth选择不接受负整数(GH 31569) 删除了display.column_space支持df.to_string(col_space=...)( GH 47280 )的选项 从 pandas 类中删除了已弃用的方法mad(GH 11787) tshift从 pandas 类中删除了已弃用的方法( GH 11631) 更改了传入的空数据的行为Series;默认 dtype 将object代替float64( GH 29405 ) DatetimeIndex.union()更改了时区不匹配的、DatetimeIndex.intersection()和的行为DatetimeIndex.symmetric_difference(),以转换为 UTC,而不是转换为对象数据类型 ( GH 39328 ) to_datetime()更改了参数“now”的行为以utc=False匹配Timestamp("now")(GH 18705) DatetimeIndex更改了使用时区原生对象在时区感知上建立索引的行为datetime,反之亦然;这些现在通过提高表现得像任何其他不可比较的类型KeyError(GH 36148) 使用dtype 和对象更改了Index.reindex()、和的行为;这些不再被认为等同于对象,因此重新索引转换为对象数据类型(GH 39767)Series.reindex()DataFrame.reindex()datetime64datetime.datefill_valuedatetime.datetime SparseArray.astype()更改了给定未明确指定的 dtype 时的行为SparseDtype,将其强制转换为确切请求的 dtype,而不是默默地使用 aSparseDtype来代替(GH 34457) 更改了行为以Index.ravel()返回原始视图Index而不是np.ndarray( GH 36900 ) Series.to_frame()更改了和的行为,Index.to_frame()显式name=None用于None列名称而不是索引名称或默认值0(GH 45523) concat()更改了一个 -dtype 数组和另一个整数 dtype 数组的行为bool,现在返回objectdtype 而不是整数 dtype;在连接以获得旧行为之前显式将 bool 对象转换为整数(GH 45101) DataFrame更改了给定浮点data和整数的构造函数的行为dtype,当数据无法无损转换时,保留浮点数据类型,匹配Series行为(GH 41170) Index当给定np.ndarray包含数字条目的对象数据类型时,更改了构造函数的行为;现在,这保留了对象数据类型,而不是推断数字数据类型,与Series行为一致(GH 42870) Index.__and__()更改了,Index.__or__()和的行为Index.__xor__(),使其表现为逻辑运算(匹配Series行为),而不是集合运算的别名(GH 37374) DataFrame当传递第一个元素为 a 的列表时,更改了构造函数的行为Categorical,现在将元素视为转换为objectdtype 的行,与其他类型的行为一致(GH 38845) DataFrame当传递dtype数据无法转换为的(int 除外)时,更改了构造函数的行为;它现在引发而不是默默地忽略 dtype ( GH 41733 ) 更改了构造函数的行为Series,它将不再从字符串条目推断 datetime64 或 timedelta64 dtype ( GH 41731 ) 更改了带有对象和传递的Timestamp构造函数的行为,以将输入解释为墙上时间而不是 UTC 时间 ( GH 42288 )np.datetime64tz 更改了行为以Timestamp.utcfromtimestamp()返回满足时区感知的对象(GH 45083)Timestamp.utcfromtimestamp(val).timestamp() == val Index当传递SparseArray或SparseDtype保留该数据类型而不是转换为时,更改了构造函数的行为numpy.ndarray(GH 43930) 更改了对象上类似 setitem 的操作(__setitem__, fillna, where, mask, replace, insert, fill_value for )的行为,当使用时区不匹配的值时,该值将转换为对象的时区,而不是同时转换为 object-dtype (GH 44243)shiftDatetimeTZDtype 更改了具有浮动 dtype 数据和 a 的Index、Series、构造函数的行为,数据现在被解释为 UTC 时间而不是 wall-time,与整数 dtype 数据的处理方式一致 ( GH 45573 )DataFrameDatetimeTZDtype Series更改了和构造函数的行为,DataFrame其中包含整数数据类型和浮点数据NaN,现在会引发IntCastingNaNError(GH 40110) 更改了带有整数和值的构造函数Series的行为,这些值太大而无法无损转换为此数据类型,现在会引发(GH 41734)DataFramedtypeValueError 更改了具有整数和具有或dtypes 的值的Series和构造函数的行为,这现在引发,请改为使用(GH 41770)DataFramedtypedatetime64timedelta64TypeErrorvalues.view("int64") 删除了、和中已弃用的base和loffset参数。使用或代替(GH 31809)pandas.DataFrame.resample()pandas.Series.resample()pandas.Grouperoffsetorigin 更改了dtypeSeries.fillna()和不兼容的行为;现在,这会转换为dtype 而不是提升,与其他 dtype 的行为一致(GH 45746)DataFrame.fillna()timedelta64[ns]fill_valueobject regex将for的默认参数Series.str.replace()从更改True为False。此外,单个字符pat现在regex=True被视为正则表达式而不是字符串文字。 (GH 36695,GH 24804) DataFrame.any()改变了和DataFrame.all()的行为bool_only=True;将不再包含具有全布尔值的 object-dtype 列,bool首先手动转换为 dtype ( GH 46188 ) DataFrame.max()更改了, DataFrame.min, DataFrame.mean, , DataFrame.median,的行为DataFrame.skew,DataFrame.kurt以axis=None返回跨两个轴应用聚合的标量 ( GH 45072 ) Timestamp改变了 a与对象的比较行为datetime.date;这些现在比较为不相等,并提高了不平等比较,匹配datetime.datetime行为(GH 36131) NaT改变了与对象的比较行为datetime.date;这些现在提出了不平等比较(GH 39196) TypeError强制弃用在与列表或字典一起使用时引发Series.transform和的静默删除列( GH 43740)DataFrame.transform DataFrame.apply()更改了类似列表的行为,以便任何部分失败都会引发错误( GH 43740) 更改了行为,现在通过( GH 47970 )DataFrame.to_latex()使用 Styler 实现Styler.to_latex() Series.__setitem__()更改了使用整数键时的行为以及Float64Index当键不存在于索引中时的行为;以前我们将键视为位置键(行为类似于),现在我们将其视为标签(行为类似于),与行为一致(GH 33469)series.iloc[key] = valseries.loc[key] = valSeries.__getitem__`() 删除了、和( GH 47157 )na_sentinel中的参数factorize()Index.factorize()ExtensionArray.factorize() 更改了数组未实现的数据类型的Series.diff()行为,这些数据类型现在会引发而不是转换为 numpy(GH 31025)DataFrame.diff()ExtensionDtypediffTypeError DataFrame强制弃用使用method="outer";调用 numpy “ufunc”现在提出了NotImplementedError(GH 36955) 强制弃用,不允许使用非数字 dtype ( GH 47500 )传递numeric_only=True到Series缩减 ( rank, any, , ...)all 改变了 的行为DataFrameGroupBy.apply(),因此即使检测到变压器(GH 34998),SeriesGroupBy.apply()也会受到尊重group_keys DataFramea和 a之间的比较Series,其中框架的列与系列的索引不匹配,ValueError而不是自动对齐,在比较之前进行(GH 36795)left, right = left.align(right, axis=1, copy=False) 在 DataFrame 缩减中强制弃用numeric_only=None(默认),这会默默地删除引发的列;numeric_only现在默认为False(GH 41480) 使用该参数将所有 DataFrame 方法中的默认值更改为numeric_only( FalseGH 46096、GH 46906 ) 将默认值更改numeric_only为False( Series.rank()GH 47561 ) 强制弃用在 groupby 和重新采样操作中静默删除有害列numeric_only=False(GH 41475) 强制弃用 、 和 ops 中静默删除的Rolling滋扰Expanding列ExponentialMovingWindow。现在这将引发errors.DataError( GH 42834 ) 更改了使用或设置值的行为,这些现在总是尝试在回退到转换之前将值设置到位(GH 45333)df.loc[:, foo] = bardf.iloc[:, foo] = bar numeric_only更改了各种DataFrameGroupBy方法的默认值;所有方法现在默认为numeric_only=False(GH 46072) 将方法中numeric_only的默认值更改为( GH 47177 )FalseResampler 使用返回 DataFrames 的可调用方法DataFrameGroupBy.transform()将与输入的索引对齐(GH 47244) 当提供长度为 1 的列列表时DataFrame.groupby(),通过迭代结果对象返回的键DataFrameGroupBy现在将是长度为 1 的元组 ( GH 47761 ) 删除了已弃用的方法ExcelWriter.write_cells(),,,,, ( GH 45795 )ExcelWriter.save()ExcelWriter.cur_sheet()ExcelWriter.handles()ExcelWriter.path() 无法再设置该ExcelWriter属性;book它仍然可以被访问和变异(GH 48943) 删除了未使用的*args和**kwargsin Rolling、Expanding、 和ExponentialMovingWindowops ( GH 47851 ) line_terminator从DataFrame.to_csv()( GH 45302 )中删除了已弃用的参数 label从lreshape()( GH 30219 )中删除了已弃用的参数 exprinDataFrame.eval()和之后的参数DataFrame.query()仅限关键字 ( GH 47587 ) 已删除Index._get_attributes_dict()(GH 50648) 已删除Series.__array_wrap__()(GH 50648) 更改了对于任何类似列表(或不是一个元素)但DataFrame.value_counts()返回单个标签的行为(SeriesGH 50829)MultiIndexIndex 性能改进# 可空数据类型的性能改进DataFrameGroupBy.median()(GH 37493)SeriesGroupBy.median()DataFrameGroupBy.cumprod() DataFrameGroupBy.all()、DataFrameGroupBy.any()、SeriesGroupBy.all()和SeriesGroupBy.any()对象数据类型的性能改进( GH 50623 ) MultiIndex.argsort()和MultiIndex.sort_values()( GH 48406 ) 的性能改进 MultiIndex.size()( GH 48723 )的性能改进 性能改进,MultiIndex.union()无缺失值和无重复(GH 48505,GH 48752) MultiIndex.difference()( GH 48606 )的性能改进 MultiIndex使用 sort=None提高集合运算的性能( GH 49010) DataFrameGroupBy.mean()、SeriesGroupBy.mean()、DataFrameGroupBy.var()、 和SeriesGroupBy.var()扩展数组数据类型的性能改进( GH 37493 ) MultiIndex.isin()性能改进level=None(GH 48622,GH 49577) MultiIndex.putmask()( GH 49830 )的性能改进 Index.union()索引包含重复项时的性能改进MultiIndex.union()(GH 48900) Series.rank()pyarrow 支持的 dtypes 的性能改进( GH 50264 ) Series.searchsorted()pyarrow 支持的 dtypes 的性能改进( GH 50447) Series.fillna()扩展数组数据类型的性能改进( GH 49722、GH 50078) 当单调时Index.join(),屏蔽和箭头数据类型的Index.intersection()性能改进( GH 50310,GH 51365)Index.union()Index 可空数据类型的性能改进Series.value_counts()(GH 48338) Series传递具有可为空 dtype 的整数 numpy 数组的构造函数的性能改进( GH 48338) DatetimeIndex传递列表的构造函数的性能改进( GH 48609) 加入排序时merge()的性能改进(GH 48504)DataFrame.join()MultiIndex to_datetime()解析具有时区偏移的字符串时的性能改进( GH 50107) DataFrame.loc()基于Series.loc()元组的索引的性能改进MultiIndex(GH 48384) Series.replace()分类 dtype 的性能改进( GH 49404) MultiIndex.unique()( GH 48335 )的性能改进 使用可为空和箭头数据类型的索引操作的性能改进(GH 49420,GH 51316) 使用扩展数组支持的索引的性能改进concat()(GH 49128、GH 49178) api.types.infer_dtype()( GH 51054 )的性能改进 使用 BZ2 或 LZMA 时减少DataFrame.to_pickle()/的内存使用量( GH 49068)Series.to_pickle() StringArray传递具有类型的 numpy 数组的构造函数的性能改进np.str_(GH 49109) from_tuples()( GH 50620 )的性能改进 性能改进factorize()( GH 49177 ) 性能改进__setitem__()(GH 50248、GH 50632) ArrowExtensionArray当数组包含 NA 时,比较方法的性能得到改进( GH 50524) 性能改进to_numpy()(GH 49973、GH 51227) 将字符串解析为BooleanDtype( GH 50613 )时的性能改进 加入( GH 48611 )DataFrame.join()的子集时的性能改进MultiIndex MultiIndex.intersection()( GH 48604 )的性能改进 DataFrame.__setitem__()( GH 46267 )的性能改进 可空数据类型的性能改进var(GH 48379)。std 迭代 pyarrow 和可为 null 的 dtypes 时的性能改进(GH 49825、GH 49851) 性能改进为read_sas()(GH 47403、GH 47405、GH 47656、GH 48502) 内存改善RangeIndex.sort_values()(GH 48801) 通过避免复制两次来提高Series.to_numpy()if的性能( GH 24345 )copy=True 性能改进( GHSeries.rename() 21055 )MultiIndex 分类类型的性能改进DataFrameGroupBy和( GH 48976 )SeriesGroupBybysort=False 分类类型的性能改进和DataFrameGroupBy( GH 49596 )SeriesGroupBybyobserved=False read_stata()参数index_col设置为None(默认)时性能得到改进。现在索引将是 aRangeIndex而不是Int64Index( GH 49745 ) merge()不合并索引时的性能改进- 新索引现在将RangeIndex代替Int64Index(GH 49478) 使用任何非对象数据类型时的DataFrame.to_dict()性能改进( GH 46470)Series.to_dict() read_html()存在多个表时的性能改进( GH 49929) Period从字符串或整数构造时构造函数的性能改进( GH 38312) to_datetime()使用格式时的性能改进'%Y%m%d'(GH 17410) to_datetime()给出格式或可以推断格式时的性能改进( GH 50465) Series.median()可空数据类型的性能改进( GH 50838) 将lambda 函数传递给并且输入具有混合时区偏移read_csv()时的性能改进(GH 35296)to_datetime()date_parser isna()和isnull()( GH 50658 ) 的性能改进 SeriesGroupBy.value_counts()分类 dtype 的性能改进( GH 46202) read_hdf()修复了( GH 37441 )中的参考泄漏 DataFrame.to_json()修复了序列化日期时间和时间增量时的内存泄漏Series.to_json()(GH 40443) 许多DataFrameGroupBy方法减少了内存使用量 ( GH 51090 ) DataFrame.round()整数参数的性能改进decimal(GH 17254) 使用大型字典时DataFrame.replace()的性能改进(GH 6697)Series.replace()to_replace StataReader读取可查找文件时的内存改进( GH 48922) Bug修复# 分类# 丢失数据类型信息的错误Categorical.set_categories()(GH 48812) 当值与新值重叠Series.replace()时,分类数据类型会出现错误( GH 49404)to_replace Series.replace()分类 dtype 丢失基础类别的可空 dtypes 的错误( GH 49404 ) 用作石斑鱼时会出现错误DataFrame.groupby()并重新排序类别( GH 48749)Series.groupby() Categorical从Categorical对象构造并dtype="category"失go有序性时构造函数中的错误( GH 49309) SeriesGroupBy.min()、SeriesGroupBy.max()、DataFrameGroupBy.min()和中的错误DataFrameGroupBy.max()无序CategoricalDtype,没有组未能筹集资金TypeError(GH 51034) 类似日期时间# 错误pandas.infer_freq(),TypeError在推断时引发RangeIndex(GH 47084) to_datetime()错误地使用OverflowError与大整数相对应的字符串参数引发错误( GH 50533) 错误是在使用and ( GH 48633 )to_datetime()进行无效偏移时引发的errors='coerce'infer_datetime_format=True 当与时区感知或数据一起显式指定时,构造函数中的错误DatetimeIndex无法引发(GH 48659)tz=Nonedtype datetime由于DatetimeIndex未能保留原始属性而减go标量的错误freq(GH 48818) pandas.tseries.holiday.Holiday半开日期间隔导致返回类型不一致的错误USFederalHolidayCalendar.holidays()( GH 49075 ) 渲染中的错误DatetimeIndex以及具有时区感知的数据类型和Series接近夏令时转换的时区(GH 49684)DataFramedateutilzoneinfo 当传递非 ISO8601 时解析、、或对象时to_datetime()会引发错误( GH 49298、GH 50036)ValueErrorTimestampdatetime.datetimedatetime.datenp.datetime64format 解析空字符串和传递非 ISO8601 格式时to_datetime()会出现错误。ValueError现在,空字符串将被解析为, 以与 ISO8601 格式 ( GH 50251 )NaT的做法兼容 Timestamp解析非 ISO8601 分隔日期字符串时,显示了错误UserWarning,用户无法操作该错误(GH 50232) 当解析包含 ISO 周指令和 ISO 工作日指令的格式的日期时,错误to_datetime()显示出误导性( GH 50308)ValueError Timestamp.round()当freq参数的持续时间为零(例如“0ns”)时返回错误结果而不是引发错误(GH 49737) 当传递无效格式时,错误to_datetime()没有出现,并且是或(GH 50266)ValueErrorerrors'ignore''coerce' 使用毫秒和另一个超级日常参数构建时DateOffset抛出错误( GH 49897)TypeError 解析具有十进制日期格式的字符串时to_datetime()没有引发错误(GH 50051)ValueError'%Y%m%d' 使用 ISO8601 格式解析混合偏移日期字符串时,错误to_datetime()未转换None为( GH 50071 )NaT 使用andto_datetime()解析越界日期字符串时,错误未返回输入(GH 14487)errors='ignore'format='%Y%m%d' 错误是在使用时区感知字符串、ISO8601 格式和( GH 50254 )进行解析时to_datetime()将时区朴素转换为时区感知datetime.datetimeutc=False to_datetime()使用 ISO8601 格式解析日期时抛出错误ValueError,其中某些值未用零填充(GH 21422) 使用andto_datetime()时给出的错误结果不正确(GH 26493)format='%Y%m%d'errors='ignore' 错误to_datetime()是无法解析日期字符串'today',并且'now'不是formatISO8601 ( GH 50359 ) Timestamp.utctimetuple()提高 a 的错误TypeError( GH 32174 ) 解析混合偏移量时出现to_datetime()错误(GH 50585)ValueErrorTimestamperrors='ignore' Bug错误地处理了 1 个溢出边界to_datetime()内的浮点输入( GH 50183 )unit to_datetime()“Y”或“M”单位的错误给出了不正确的结果,不匹配逐点Timestamp结果(GH 50870) 日期时间或时间增量数据类型中的错误错误地Series.interpolate()引发(GH 11312)DataFrame.interpolate()ValueError 当输入越界时,错误to_datetime()没有返回输入( GH 50587)errors='ignore' DataFrame.from_records()当给定具有时区感知的 datetime64 列的输入时DataFrame错误地删除时区感知(GH 51162) 使用(GH 51084)解析日期字符串时to_datetime()出现错误decimal.InvalidOperationerrors='coerce' 错误to_datetime()同时unit指定origin返回不正确的结果(GH 42624) Series.astype()将DataFrame.astype()包含时区感知日期时间或字符串的对象 dtype 对象转换为datetime64[ns]错误本地化为 UTC 而不是引发时出现错误TypeError( GH 50140 ) DataFrameGroupBy.quantile()datetime 或 timedelta dtype中的错误会为包含( GH 51373 )SeriesGroupBy.quantile()的组提供不正确的结果NaT 错误地使用DataFrameGroupBy.quantile()或SeriesGroupBy.quantile()错误地提高PeriodDtype(DatetimeTZDtypeGH 51373) 时间增量# to_timedelta()当输入具有可为空的数据类型时引发错误的错误Float64(GH 48796) 构造函数中的错误在给定 a 时Timedelta错误地引发而不是返回(GH 48898)NaTnp.timedelta64("nat") 当传递对象和关键字(例如天、秒)时,构造函数中的错误Timedelta无法引发( GH 48898)Timedelta Timedelta与非常大的datetime.timedelta对象进行比较时的错误错误提升OutOfBoundsTimedelta(GH 49021) 时区# 包含具有异构时区的多个时区感知对象的 object-dtypeSeries.astype()中的错误会错误地提升(GH 32581)DataFrame.astype()datetimeDatetimeTZDtype 当使用(GH 49748)指定时,错误to_datetime()无法解析带有时区名称的日期字符串format%Z 将无效值传递给( GH 49565 )ambiguous中的参数时出现更好的错误消息Timestamp.tz_localize() 字符串解析中的错误错误地允许Timestamp使用无效时区构造 a ,这在尝试打印时会引发(GH 50668) 更正了 TypeError 消息以objects_to_datetime64ns()通知 DatetimeIndex 具有混合时区 ( GH 50974 ) 数字# DataFrame.add()当输入包含混合 DataFrame 类型和 Series 类型时,无法应用 ufunc中的错误( GH 39853) 组合屏蔽数据类型和 numpy 数据类型时,算术运算中Series不传播掩码的错误(GH 45810、GH 42630) 当使用( GH 49759 )支持的数据时,总是会DataFrame.sem()出现错误Series.sem()TypeErrorArrowDtype Series.__add__()转换为列表和屏蔽对象时出现错误Series(GH 22962) mode()当dropna=False存在值时不尊重的错误NA(GH 50982) DataFrame.query()和engine="numexpr"列名称中的错误是min或max会引发TypeError( GH 50937 ) DataFrame.min()包含DataFrame.max()tz 感知数据的错误pd.NaT将axis=1返回不正确的结果 ( GH 51242 ) 转换# 从字符串列表中Series使用dtype构建时的错误是引发而不是转换( GH 44923)int64 Series使用屏蔽数据类型和布尔值进行构建时出现错误NA(GH 42137) 当函数调用中有负值时DataFrame.eval()错误地引发 an错误( GH 46471)AttributeError 当包含并具有 dtypeSeries.convert_dtypes()时,不将 dtype 转换为可空 dtype 的错误(GH 48791)SeriesNAobject ExtensionDtype任何子类kind="M"都会被解释为时区类型的错误( GH 34986) 当传递字符串或二进制序列时arrays.ArrowExtensionArray会引发错误( GH 49172)NotImplementedError 从非 pyarrow 字符串数据类型转换为 pyarrow 数字类型时Series.astype()引发的错误( GH 50430 )pyarrow.ArrowInvalid 转换为andDataFrame.astype()时就地修改输入数组的错误(GH 51073)stringcopy=False Series.to_numpy()在应用之前转换为 NumPy 数组时出现错误na_value(GH 48951) DataFrame.astype()转换为 pyarrow dtype 时不复制数据的错误( GH 50984 ) 当ISO8601 格式 ( GH 12649 )时,错误to_datetime()不尊重exact参数format 转换为 pyarrow 持续时间类型时TimedeltaArray.astype()引发的错误( GH 49795 )TypeError 扩展数组数据类型的错误DataFrame.eval()和DataFrame.query()引发(GH 29618、GH 50261、GH 31913) 当创建自且等于自时Series()不复制数据的错误(GH 52008)IndexdtypedtypeIndex 字符串# 错误pandas.api.types.is_string_dtype()不会返回True或StringDtype与ArrowDtype(pyarrow.string()GH 15585) 将字符串数据类型转换为“datetime64[ns]”或“timedelta64[ns]”时错误地引发错误TypeError(GH 36153) 在带有数组的 string-dtype 列中设置值时出现错误,当数组包含缺失值时,会产生副作用(GH 51299) 间隔# IntervalIndex.is_overlapping()如果间隔有重复的左边界,则输出不正确( GH 49581) Series.infer_objects()无法推断IntervalDtype对象系列的错误Interval( GH 50090 ) 错误Series.shift()和IntervalDtype无效的 nullfill_value未能引发TypeError(GH 51258) 索引# DataFrame.__setitem__()当索引器为 dtype 时引发DataFrame错误(booleanGH 47125) DataFrame.reindex()对列和数据类型索引进行索引时填充错误值的错误uint(GH 48184) DataFrame.loc()使用不同的 dtypes设置DataFrame将值强制为单一 dtype时出现错误( GH 50467) 当列表为空DataFrame.sort_values()时None未返回的错误(GH 50643)byinplace=True DataFrame.loc()使用列表索引器设置值时强制 dtypes中的错误( GH 49159 ) Series.loc()引发切片索引器越界末尾错误的错误( GH 50161 ) 使用所有索引器和空对象DataFrame.loc()引发错误( GH 51450)ValueErrorFalse bool 使用索引器DataFrame.loc()提升的错误和(GH 47687)ValueErrorboolMultiIndex 使用非标量索引器为 pyarrow 支持的列设置值时DataFrame.loc()引发错误( GH 50085 )IndexError 在使用整数扩展浮点数据类型 ( & ) 或复杂数据类型的索引上建立索引时 、 和DataFrame.__getitem__()中Series.__getitem__()的错误( GH 51053 )DataFrame.__setitem__()Series.__setitem__()Float64Float64 DataFrame.loc()使用空索引器设置不兼容的值时修改对象时出现错误( GH 45981) 当右手边有柱时DataFrame.__setitem__()提升错误(GH 49121)ValueErrorDataFrameMultiIndex 重新索引时将 dtype 转换为具有单个扩展数组列的DataFrame.reindex()错误以及(GH 48190)objectDataFramecolumnsindex 当索引器是具有数字扩展数组数据类型时DataFrame.iloc()引发的错误( GH 49521)IndexErrorSeries describe()结果索引中的百分位数格式显示的小数位数多于所需数量时出现的错误( GH 46362 ) 与可为 null 的数据类型中的值进行比较时,错误DataFrame.compare()无法识别差异NA(GH 48939) 丢失扩展数组数据类型的Series.rename()错误(GH 21055)MultiIndex DataFrame.isetitem()将扩展数组数据类型强制转换为DataFrame对象时出现错误( GH 49922) Series.__getitem__()从空的 pyarrow 支持的对象中进行选择时返回损坏对象的错误( GH 51734 ) 当索引中不包含开放时间时,错误BusinessHour会导致创建失败( GH 49835)DatetimeIndex 丢失的# 当由包含( GH 48446 )的元组组成时,Index.equals()引发错误TypeErrorIndexNA Series.map()当数据具有 NaN 且使用 defaultdict 映射时,错误会导致错误结果( GH 48813) 对对象执行二元运算时NA引发 aTypeError而不是 return 的错误( GH 49108 )NAbytes 当列包含值且列不存在于(GH 16713)时,DataFrame.update()引发错误overwrite=FalseTypeErrorselfNaTother 替换包含( GH 47480 )的对象数据类型中的值时Series.replace()引发的错误RecursionErrorSeriesNA 用(GH 50758)替换数字中的值时Series.replace()引发的错误RecursionErrorSeriesNA 多重索引# MultiIndex.get_indexer()不匹配值的错误NaN(GH 29252、GH 37222、GH 38623、GH 42883、GH 43222、GH 46173、GH 48905) 当索引包含时MultiIndex.argsort()引发的错误(GH 48495)TypeErrorNA MultiIndex.difference()丢失扩展数组数据类型的错误( GH 48606) 设置空级别时MultiIndex.set_levels引发错误( GH 48636)IndexError MultiIndex.unique()丢失扩展数组 dtype时出现的错误( GH 48335) MultiIndex.intersection()丢失扩展阵列的错误( GH 48604) 丢失扩展阵列的错误MultiIndex.union()(GH 48498,GH 48505,GH 48900) MultiIndex.union()当 sort=None 且索引包含缺失值时不排序的错误( GH 49010 ) MultiIndex.append()不检查名称是否相等的错误( GH 48288) MultiIndex.symmetric_difference()丢失扩展阵列的错误( GH 48607) MultiIndex.join()当有重复项时丢失数据类型的错误MultiIndex(GH 49830) MultiIndex.putmask()丢失扩展阵列的错误( GH 49830) MultiIndex.value_counts()返回Series由元组的平面索引而不是MultiIndex( GH 49558 )索引的错误 输入/输出# read_sas()导致碎片DataFrame并引发的错误errors.PerformanceWarning(GH 48595) read_excel()通过在读取文件时引发异常时包含有问题的工作表名称来改进错误消息( GH 48706) 当酸洗 PyArrow 支持的数据子集时出现错误,该数据将序列化整个数据而不是子集(GH 42600) 当指定并且结果为空时read_sql_query()忽略参数的错误( GH 50245)dtypechunksize read_csv()单行 csv 的错误,其列数少于names使用(GH 47566)errors.ParserError提出的列数engine="c" read_json()提高orient="table"和价值的错误NA(GH 40255) 显示string数据类型时出现错误,未显示存储选项(GH 50099) 错误将DataFrame.to_string()索引header=False名称打印在与数据第一行相同的行上(GH 49230) DataFrame.to_string()忽略扩展数组的浮点格式化程序的错误( GH 39336) 修复了由于内部 JSON 模块初始化而导致的内存泄漏 ( GH 49222 ) json_normalize()修复了错误地从与参数匹配的列名称中删除前导字符的问题sep( GH 49861 ) read_csv()包含扩展数组 dtype 时出现不必要的溢出错误NA( GH 32134 ) DataFrame.to_dict()未转换NA为的错误None(GH 50795) DataFrame.to_json()无法对字符串进行编码时出现段错误的错误( GH 50307) 当包含非标量数据时, set会DataFrame.to_html()出现错误( GH 47103)na_repDataFrame read_xml()使用 iterparse 时类文件对象失败的错误( GH 50641 ) 参数未正确处理read_csv()时出现engine="pyarrow"的错误( GH 51302)encoding read_xml()使用 iterparse 时忽略重复元素的错误( GH 51183 ) ExcelWriter如果实例化期间发生异常,则保持文件句柄打开的错误( GH 51443 ) DataFrame.to_parquet()非字符串索引或列引发ValueError时间错误engine="pyarrow"( GH 52036 ) 时期# Period.strftime()和中的错误,在传递特定于区域设置的指令时PeriodIndex.strftime()引发( GH 46319)UnicodeDecodeError 将对象添加到对象Period数组时DateOffset错误地引发错误TypeError(GH 50162) Period传递分辨率比纳秒更精细的字符串会导致KeyError而不是降低额外精度的错误( GH 50417) 解析表示周周期的字符串时出现错误,例如“2017-01-23/2017-01-29”作为分钟频率而不是周频率(GH 50803) 错误DataFrameGroupBy.sum(), DataFrameGroupByGroupBy.cumsum(), DataFrameGroupByGroupBy.prod(),DataFrameGroupByGroupBy.cumprod()未能PeriodDtype提高TypeError( GH 51040 ) 解析空字符串时Period错误地引发ValueError而不是返回NaT(GH 51349) 绘图# 错误DataFrame.plot.hist(),没有删除与(GH 48884)中的值weights相对应的元素NaNdata ax.set_xlim有时会引发用户由于不接受解析参数而UserWarning无法解决的问题 - 转换器现在使用(GH 49148)set_xlimTimestamp() 分组/重新采样/滚动# 错误ExponentialMovingWindow未针对不受支持的操作online提出 a ( GH 48834 )NotImplementedError 当对象为空时会DataFrameGroupBy.sample()引发错误( GH 48459)ValueError 当索引条目等于索引名称时会Series.groupby()引发错误( GH 48567)ValueError DataFrameGroupBy.resample()传递空 DataFrame 时产生不一致的结果 ( GH 47705 ) 按分类索引分组时存在错误DataFrameGroupBy,并且SeriesGroupBy不会在结果中包含未观察到的类别(GH 49354) 错误DataFrameGroupBy并SeriesGroupBy会根据分类分组时的输入索引更改结果顺序(GH 49223) 即使与(GH 42482)一起使用,对分类数据进行分组也会对结果值进行排序DataFrameGroupBy时出现错误SeriesGroupBysort=False 当使用分组键失败时,错误 inDataFrameGroupBy.apply()和SeriesGroupBy.applywithas_index=False不会尝试在不使用分组键的情况下进行计算TypeError(GH 49256) 错误DataFrameGroupBy.describe()会描述组密钥(GH 49256) 错误的形状会不正确(SeriesGroupBy.describe()GH 49256)as_index=False 当石斑鱼分类时,Bug inDataFrameGroupBy和SeriesGroupBywith会降低 NA 值( GH 36327)dropna=False SeriesGroupBy.nunique()当石斑鱼是空分类时,错误会错误地引发observed=True(GH 21334) 当石斑鱼从( GH 26454 )SeriesGroupBy.nth()进行子集化后包含 NA 值时,会引发错误DataFrameGroupBy 当( GH 50413 )时,结果中DataFrame.groupby()不会包含Grouper指定的错误keyas_index=False DataFrameGroupBy.value_counts()与TimeGrouper( GH 50486 )一起使用时会出现错误 错误导致返回Resampler.size()Wide而不是with ( GH 46826 )DataFrameSeriesMultiIndex 当石斑鱼有for和参数时,错误DataFrameGroupBy.transform()会错误地引发(GH 45986)SeriesGroupBy.transform()axis=1"idxmin""idxmax" DataFrameGroupBy与空 DataFrame、分类石斑鱼和dropna=False( GH 50634 )一起使用时会出现错误 SeriesGroupBy.value_counts()不尊重错误sort=False(GH 50482) 按时间索引重新采样时从键列表获取结果时会DataFrameGroupBy.resample()引发错误( GH 50840)KeyError 当石斑鱼有争论时,错误会错误地引发DataFrameGroupBy.transform()(GH 45986)SeriesGroupBy.transform()axis=1"ngroup" DataFrameGroupBy.describe()当数据具有重复列时,错误会产生不正确的结果 ( GH 50806 ) 错误地DataFrameGroupBy.agg()不engine="numba"尊重as_index=False(GH 51228) DataFrameGroupBy.agg()、SeriesGroupBy.agg()和中的错误Resampler.agg()在传递函数列表时会忽略参数(GH 50863) DataFrameGroupBy.ohlc()忽略错误as_index=False(GH 51413) 子集化列后的错误DataFrameGroupBy.agg()(例如)不会在结果中包含分组(GH 51186).groupby(...)[["a", "b"]] 重塑# DataFrame.pivot_table()引发可空数据类型的错误TypeError和margins=True(GH 48681) 当具有混合名称时出现错误DataFrame.unstack()并Series.unstack()取消堆叠错误级别(GH 48763)MultiIndexMultiIndex DataFrame.melt()丢失扩展数组 dtype时出现的错误( GH 41570) DataFrame.pivot()不尊重None列名称的错误( GH 48293) DataFrame.join()当left_on或right_on是或包括CategoricalIndex错误加注时出现错误AttributeError(GH 48464) 当结果为空时使用参数DataFrame.pivot_table()引发错误(GH 49240)ValueErrormargins=TrueDataFrame merge()澄清了传递无效选项时的错误消息validate(GH 49417) 在具有值或空列表的多个列上DataFrame.explode()引发错误( GH 46084)ValueErrorNaN DataFrame.transpose()带有端点IntervalDtype的列出现错误timedelta64[ns](GH 44917) 错误DataFrame.agg()并Series.agg()在传递函数列表时忽略参数(GH 50863) 稀疏# 将带有子类型的子类型转换为dtype 提升Series.astype()时出现的错误,与非稀疏行为不一致(GH 49631,:问题:50087)SparseDtypedatetime64[ns]int64 Series.astype()将 from 转换datetime64[ns]为Sparse[datetime64[ns]]错误提升时出现的错误( GH 50082 ) 当包含( GH 50996 )时Series.sparse.to_coo()引发错误SystemErrorMultiIndexExtensionArray 扩展数组# Series.mean()可空整数不必要地溢出的错误( GH 48378) Series.tolist()可空数据类型返回 numpy 标量而不是 python 标量的错误( GH 49890) Series.round()pyarrow 支持的 dtypes 提升的错误AttributeError(GH 50437) 将具有 ExtensionDtype 的空 DataFrame 连接到具有相同 ExtensionDtype 的另一个 DataFrame 时出现错误,生成的 dtype 变成对象(GH 48510) 指定时array.PandasArray.to_numpy()提高值的错误( GH 40638)NAna_value 如果返回,api.types.is_numeric_dtype()自定义ExtensionDtype将不会返回的错误(GH 50563)True_is_numericTrue api.types.is_integer_dtype()、api.types.is_unsigned_integer_dtype()、中的错误api.types.is_signed_integer_dtype(),如果返回相应的 NumPy 类型,api.types.is_float_dtype()自定义ExtensionDtype将不会返回( GH 50667 )Truekind Series对于可为空的无符号整数数据类型,构造函数中的错误不必要地溢出( GH 38798,GH 25880) 将非字符串值设置为StringArrayraiseValueError而不是TypeError( GH 49632 )时出现错误 DataFrame.reindex()在具有 ExtensionDtype 的列的情况下不遵守默认关键字的错误copy=True(因此使用 getitem ( []) 选择多个列也没有正确生成副本)(GH 51197) ArrowExtensionArray逻辑运算&和|提升中的错误KeyError(GH 51688) 造型器# 修复了具有值的background_gradient()可为 null 的数据类型( GH 50712 )SeriesNA 元数据# DataFrame.corr()修复了和DataFrame.cov()( GH 28283 )中的元数据传播 其他# 多次错误接受包含“[pyarrow]”的 dtype 字符串的错误 ( GH 51548 ) 接受参数Series.searchsorted()时行为不一致的错误(GH 49620)DataFramevalue array()无法提高输入的错误DataFrame(GH 51167) 贡献者# 共有 260 人为此版本贡献了补丁。名字带有“+”的人首次贡献了补丁。 5j9+ ABCPAN 等级 + 阿尼·科斯克拉 + 阿什什 KC + 阿布贝克·穆罕默德 + 亚当·姆罗兹 + 亚当·奥蒙德罗伊德 + 阿迪亚·阿努莱克 + 艾哈迈德·易卜拉欣 阿克谢·巴巴尔 + 阿列克萨·拉多吉西奇 + 亚历克斯+ 亚历克斯·布泽内特 + 亚历克斯·科科 关佳丽 + 阿梅·帕特尔 + 安布吉·帕瓦尔 + 阿莫兹+ 安德烈亚斯·施瓦布 + 安德鲁·陈 + 安东·舍夫佐夫 安东尼奥·奥萨·格拉 + 安东尼奥·奥萨-格拉 + 安努舒卡·比什诺伊 + 阿尔达·科萨尔 阿明·贝尔雷斯 阿萨杜拉·纳伊姆 + 阿希·玛哈帕特拉 贝利·利辛顿 + 巴科特·贝耶内 本·比斯利 巴韦什·拉金德拉·帕蒂尔 + 比贝克·贾 + 比尔+ 比什瓦斯 + 卡洛斯GDCJ + 卡洛塔·法比安 + 克里斯·罗斯 + 查克·卡德曼 + 科拉林+ 副局长+ 丹·亨德利 + 丹尼尔·艾萨克 大卫·克莱因丁斯特 + 大卫·波兹尼克 + 大卫·鲁德尔 + 大卫·克莱因丁斯特 + 德亚·玛丽亚·莱昂 + 迪帕克·西罗希瓦尔 + 丹尼斯·查昆塔 道格拉斯·洛曼 + 德里斯·肖蒙 达斯汀·K+ 爱德华多·阿巴蒂 + 爱德华多·查韦斯 + 埃格·厄兹古罗格鲁 + 叶卡捷琳娜·博罗维科娃 + 伊莱·施瓦茨 + 林埃尔维斯 + 艾米丽·泰勒 + 艾玛·卡巴拉尔·海尔 + 埃里克·韦尔奇 + 李芳辰 弗洛里安·霍夫施泰特 + 弗林·欧文 + 弗雷德里克·埃兰森 + 高拉夫·谢尼 乔雷·周 + 乔治·蒙约罗 + 吉列尔梅·贝尔特拉米尼 古努尔·拜姆坎贝托娃 + HL+ 汉斯 哈蒂姆·扎希德 + 高尤达+ 比企+ 希曼舒·瓦格 + 雨果·范·凯梅纳德 + 伊迪尔·伊斯米古泽尔 + 欧夫·勒斯蒂格 艾萨克·钟 艾萨克·维尔舒普 JHM 达比郡 JHM 达比郡 (iMac) 伯利 海梅·迪·克里斯蒂娜 简·科赫 JanVHII + 贾诺什·里伯塞尔 贾斯曼迪普·考尔 + 杰里米·图鲁普 杰西卡·M+ 乔纳斯·哈格 乔里斯·范登博什 若昂·梅雷莱斯 + 朱莉娅·奥恩 + 贾斯图斯·马金 + 康素敏+ 凯文·谢泼德 许增伟 基安·埃利亚西 克斯特亚·法伯 + Kotlin岛 + 拉克马尔·皮纳杜瓦格 + 拉克夏·阿格拉瓦尔 + 劳伦斯·米切尔 + 列维奥布+ 卢伊克·迪里多卢 洛伦佐·瓦尼利 + 卢卡·皮齐尼 + 卢卡斯·达莫 + 卢克·曼利 玛杜丽·帕蒂尔 + 马克·加西亚 马可·爱德华·戈雷利 马可·戈雷利 马可·戈雷利 马伦·韦斯特曼 + 玛丽亚·斯塔泽罗娃 + 玛丽·K+ 玛丽埃尔+ 马克·哈富什 + 马尔科·帕卡克 + 马丁+ 马修斯·塞尔奎拉 + 马修斯·佩德罗尼 + 马泰奥·拉索 + 马修·罗斯克 Meeseeks机器 + 迈赫迪·穆罕默迪 + 迈克尔·哈里斯 + 迈克尔·米奥 + 纳塔利娅·莫基耶娃 + 尼尔·穆皮迪 + 尼克·克鲁斯 尼舒·乔杜里 + 诺亚·塔米尔 小林德忠 奥姆卡尔·亚达夫 + P·塔利 + 巴勃罗+ 熊猫开发团队 冻糕加萨娜 帕特里克·赫夫勒 佩德罗·纳赫特 + 菲利普+ 彼得罗·巴蒂斯顿 普贾·苏布拉马尼亚姆 + 普拉纳夫·赛布山·拉乌里 + 普拉纳夫。 P.A+ 拉尔夫·戈默斯 + RaphSku + 理查德·沙德拉赫 罗布斯杜德 + 罗杰 罗杰·托马斯 罗杰·托马斯 + 富勒4 + 萨拉赫丁+ 萨姆·拉奥 肖恩·帕特里克·马洛伊 + 塞巴斯蒂安·罗尔 + 尚塔努 沙什瓦特 + 沙什瓦特·阿格拉瓦尔 + 希科·万威亚 + 肖汉姆·德布纳斯 舒布汉卡尔·洛哈尼 + 悉达多·甘地 + 西蒙·霍金斯 苏米克·杜塔 + 索罗夫·塔鲁克德尔 + 斯蒂芬妮·莫林 斯蒂芬妮·森格 + 斯蒂芬·肖恩 + 史蒂文·罗通多 斯蒂恩·范霍伊 苏丹苏+ 斯文 西尔万·玛丽 西尔万·玛丽 塔贝亚·科森 + 泰勒·帕卡德 特尔吉·彼得森 蒂埃里·莫伊桑 托马斯·H+ 托马斯·李 托斯顿·沃特温 茨维卡S+ 茨维卡·夏皮拉 + 瓦姆西·维尔玛 + 维尼修斯·阿基拉 + 威廉·安德烈 威廉·艾德 威廉·布鲁姆 + 邢+ 小袁+ X不是+ 亚辛·塔塔尔 + 耿元浩 伊万·赛万 + 扎卡里·穆恩 + 王正波+ 阿邦特+ 阿德里安太平洋 + 施舍 阿莫佐普+ 安迪耶森 + 匿名鼠标1 + 砰128 + 比什瓦斯·杰哈 + 卡霍克迈耶 + 卡拉-阿尔维斯-24 + 卡洛塔+ 卡萨迪皮特拉 + 卡特玛22 + cfabian + 科达缪斯 + 数据处理 大卫利恩123 + 依赖机器人[机器人] + 夫德罗查+ github-actions[机器人] 希曼舒_瓦格 + iofall + 贾克卡姆 + 杰布罗克门德尔 jnclt+ 乔尔琴+ 乔尔索诺达 + 约书亚贝洛2550 乔伊斯瓦姆韦亚 + 凯瑟琳杭 + 克拉什+ 托尼亚齐 + 卢克396 + 米沃什·马丁诺夫 + 米纳特枢纽 + mliu08+ 莫桑烷+ 尼尔克斯姆 尼基塔韦德 + 悖论实验室 + 帕尔捷夫 赖萨兹 + 拉姆·维克拉姆·辛格 + 丽贝卡·帕尔默 萨瓦桑杰 + 塞尔雅克斯 + 西尔维奥沃 + smij720+ 苏米尔巴尔多塔 + 星灵7 + 草莓沙滩凉鞋+ 特莫舒 + 乌塞尔 + yqyqyq-W+ 云+ 阿达姆·利帕伊 김동현 (Daniel Donghyun Kim) +