1.4.0 中的新增功能(2022 年 1 月 22 日)# 这些是 pandas 1.4.0 中的变化。请参阅发行说明以获取完整的变更日志,包括其他版本的 pandas。 增强功能# 改进的警告消息# 以前,警告消息可能指向 pandas 库内的行。运行脚本setting_with_copy_warning.py import pandas as pd df = pd.DataFrame({'a': [1, 2, 3]}) df[:2].loc[:, 'a'] = 5 pandas 1.3 的结果是: .../site-packages/pandas/core/indexing.py:1951: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. 这使得很难确定警告是从哪里生成的。现在 pandas 将检查调用堆栈,报告 pandas 库之外引起警告的第一行。上述脚本的输出现在是: setting_with_copy_warning.py:4: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. 索引可以保存任意ExtensionArrays # 到目前为止,传递自定义ExtensionArray会将pd.Index数组转换为objectdtype。现在Index可以直接保存任意ExtensionArrays(GH 43930)。 以前的行为: In [1]: arr = pd.array([1, 2, pd.NA]) In [2]: idx = pd.Index(arr) 在旧的行为中,idx将是 object-dtype: 以前的行为: In [1]: idx Out[1]: Index([1, 2, <NA>], dtype='object') 对于新的行为,我们保留原始的数据类型: 新行为: In [3]: idx Out[3]: Index([1, 2, <NA>], dtype='Int64') 一个例外是SparseArray,它将继续转换为 numpy dtype,直到 pandas 2.0。此时它将像其他 ExtensionArray 一样保留其数据类型。 造型器# Styler在1.4.0中得到了进一步的发展。进行了以下一般增强: 添加了索引的样式和格式设置,包括Styler.apply_index()、Styler.applymap_index()和Styler.format_index()。这些镜像反映了已用于设置数据值样式和格式的方法的签名,并且适用于 HTML、LaTeX 和 Excel 格式(GH 41893、GH 43101、GH 41993、GH 41995) 新方法Styler.hide()不赞成使用Styler.hide_index()( Styler.hide_columns()GH 43758 ) 关键字参数levelandnames已添加到Styler.hide()(并隐式添加到已弃用的方法Styler.hide_index()and 中Styler.hide_columns()),用于对 MultiIndex 和索引名称的可见性进行额外控制(GH 25475、GH 43404、GH 43346) 和已更新Styler.export(),以解决 v1.2.0 和 v1.3.0 ( GH 40675 )Styler.use()中添加的所有功能 该类别下的全局选项pd.options.styler已扩展为配置默认Styler属性,以解决格式设置、编码以及 HTML 和 LaTeX 渲染问题。请注意,以前Styler依赖display.html.use_mathjax,现在已被styler.html.mathjax( GH 41395 )取代 验证某些关键字参数,例如caption(GH 43368) 各种错误修复如下所示 此外,还有针对 HTML 特定渲染的特定增强功能: Styler.bar()引入了额外的参数来控制对齐和显示(GH 26070,GH 36419),并且它还验证输入参数width和height(GH 42511) Styler.to_html()引入关键字参数sparse_index, sparse_columns, bold_headers, caption,max_rows和max_columns( GH 41946 , GH 43149 , GH 42972 ) Styler.to_html()省略隐藏表元素的 CSSStyle 规则作为性能增强(GH 43619) 现在可以直接指定自定义 CSS 类,无需字符串替换 ( GH 43686 ) 能够通过新的hyperlinks格式化关键字参数自动呈现超链接(GH 45058) 还有一些 LaTeX 特定的增强功能: Styler.to_latex()引入了关键字参数environment,它还允许通过单独的 jinja2 模板(GH 41866)输入特定的“longtable”条目 LaTeX 现在可以进行简单的稀疏化,而无需包含多行包(GH 43369) MultiIndex通过关键字参数添加了cline支持以进行行稀疏化 ( GH 45138 ) 使用基于 pyarrow 的新 CSV 引擎进行多线程 CSV 读取# pandas.read_csv()现在接受engine="pyarrow"(至少需要 pyarrow1.0.1)作为参数,允许在安装了 pyarrow 的多核计算机上更快地解析 csv。有关详细信息,请参阅I/O 文档。 (GH 23697,GH 43706) 用于滚动和扩展窗口的 Rank 函数# 为和增加了rank功能。新函数支持、和标志 。该参数支持、和 排序方法。例子:RollingExpandingmethodascendingpctDataFrame.rank()methodminmaxaverage In [4]: s = pd.Series([1, 4, 2, 3, 5, 3]) In [5]: s.rolling(3).rank() Out[5]: 0 NaN 1 NaN 2 2.0 3 2.0 4 3.0 5 1.5 dtype: float64 In [6]: s.rolling(3).rank(method="max") Out[6]: 0 NaN 1 NaN 2 2.0 3 2.0 4 3.0 5 2.0 dtype: float64 Groupby 位置索引# 现在可以指定相对于每个组末端的位置范围。 DataFrameGroupBy.head()、SeriesGroupBy.head()、DataFrameGroupBy.tail()和的负参数SeriesGroupBy.tail()现在可以正常工作,并分别产生相对于每个组的结束和开始的范围。以前,负参数返回空帧。 In [7]: df = pd.DataFrame([["g", "g0"], ["g", "g1"], ["g", "g2"], ["g", "g3"], ...: ["h", "h0"], ["h", "h1"]], columns=["A", "B"]) ...: In [8]: df.groupby("A").head(-1) Out[8]: A B 0 g g0 1 g g1 2 g g2 4 h h0 DataFrameGroupBy.nth()现在SeriesGroupBy.nth()接受一个切片或整数和切片的列表。 In [9]: df.groupby("A").nth(slice(1, -1)) Out[9]: A B 1 g g1 2 g g2 In [10]: df.groupby("A").nth([slice(None, 1), slice(-1, None)]) Out[10]: A B 0 g g0 3 g g3 4 h h0 5 h h1 DataFrameGroupBy.nth()现在SeriesGroupBy.nth()接受索引符号。 In [11]: df.groupby("A").nth[1, -1] Out[11]: A B 1 g g1 3 g g3 5 h h1 In [12]: df.groupby("A").nth[1:-1] Out[12]: A B 1 g g1 2 g g2 In [13]: df.groupby("A").nth[:1, -1:] Out[13]: A B 0 g g0 3 g g3 4 h h0 5 h h1 DataFrame.from_dict 和 DataFrame.to_dict 有新'tight'选项# 保留条目和名称的新'tight'字典格式MultiIndex现在可以通过DataFrame.from_dict()和 DataFrame.to_dict()方法使用,并且可以与标准json 库一起使用来生成对象的紧密表示DataFrame(GH 4889)。 In [14]: df = pd.DataFrame.from_records( ....: [[1, 3], [2, 4]], ....: index=pd.MultiIndex.from_tuples([("a", "b"), ("a", "c")], ....: names=["n1", "n2"]), ....: columns=pd.MultiIndex.from_tuples([("x", 1), ("y", 2)], ....: names=["z1", "z2"]), ....: ) ....: In [15]: df Out[15]: z1 x y z2 1 2 n1 n2 a b 1 3 c 2 4 In [16]: df.to_dict(orient='tight') Out[16]: {'index': [('a', 'b'), ('a', 'c')], 'columns': [('x', 1), ('y', 2)], 'data': [[1, 3], [2, 4]], 'index_names': ['n1', 'n2'], 'column_names': ['z1', 'z2']} 其他增强功能# concat()attrs当所有对象相同时将保留,attrs当它们不同时将丢弃 ( GH 41828 ) DataFrameGroupBy现在可以as_index=False正确保留ExtensionDtype分组列的数据类型(GH 41373) 添加对为and ( GH 15079 )by中的参数赋值的支持DataFrame.plot.hist()DataFrame.plot.box() Series.sample(), DataFrame.sample(), DataFrameGroupBy.sample(),SeriesGroupBy.sample()现在接受 anp.random.Generator作为 的输入random_state。生成器的性能会更高,尤其是使用replace=False( GH 38100 ) Series.ewm()现在DataFrame.ewm()支持method带有一个'table'选项的参数,该选项在整个DataFrame.有关性能和功能优势,请参阅窗口概述( GH 42273 ) DataFrameGroupBy.cummin()、、、现在支持这个论点(GHSeriesGroupBy.cummin() 34047 )DataFrameGroupBy.cummax()SeriesGroupBy.cummax()skipna read_table()现在支持这个论点storage_options(GH 39167) DataFrame.to_stata()现在StataWriter()接受仅关键字参数value_labels来保存非分类列的标签(GH 38454) 依赖于基于哈希图的算法的方法,例如 和DataFrameGroupBy.value_counts(),DataFrameGroupBy.count()并factorize()忽略复数的虚部(GH 17927) 在 Python 3.9 中添加Series.str.removeprefix()并Series.str.removesuffix()引入以删除字符串类型中的前/后缀Series( GH 36944 ) DataFrame.to_csv()尝试使用、DataFrame.to_html()、DataFrame.to_excel()、DataFrame.to_feather()、DataFrame.to_parquet()、DataFrame.to_stata()、DataFrame.to_json()、写入丢失父目录中的文件DataFrame.to_pickle(),现在DataFrame.to_xml()明确提及丢失父目录,对应项也是如此Series(GH 24306) 现在支持使用.loc和建立索引( GH 37750 ).ilocEllipsis IntegerArray.all()、、、并使用 Kleene 逻辑 ( GHIntegerArray.any() 41967 )FloatingArray.any()FloatingArray.all() DataFrame.to_stata()添加了对、StataWriter、StataWriter117和StataWriterUTF8( GH 40855 )中可为空布尔值和整数类型的支持 DataFrame.__pos__()现在DataFrame.__neg__()保留ExtensionDtype数据类型(GH 43883) 无法导入可选依赖项时引发的错误现在包括原始异常,以便于调查(GH 43882) 添加ExponentialMovingWindow.sum()(GH 13297) Series.str.split()现在支持regex显式指定模式是否为正则表达式的参数。默认值为None(GH 43563、GH 32835、GH 25549) DataFrame.dropna()现在接受单个标签subset以及类似数组(GH 41021) 添加DataFrameGroupBy.value_counts()(GH 43564) read_csv()现在接受一个callable函数,用于on_bad_lines自engine="python"定义处理坏行(GH 5686) ExcelWriter添加了参数if_sheet_exists="overlay"选项(GH 40231) read_excel()现在接受一个decimal参数,允许用户在将字符串列解析为数字时指定小数点(GH 14403) DataFrameGroupBy.mean()、、、、、、、、现在支持使用关键字进行Numba执行(GH 43731SeriesGroupBy.mean()、GH 44862DataFrameGroupBy.std()、GH 44939)SeriesGroupBy.std()DataFrameGroupBy.var()SeriesGroupBy.var()DataFrameGroupBy.sum()SeriesGroupBy.sum()engine Timestamp.isoformat()现在处理timespec来自基类的参数datetime(GH 26131) NaT.to_numpy() dtype参数现在受到尊重,因此np.timedelta64可以返回(GH 44460) 新选项自定义添加到选项卡补全并建议的display.max_dir_items列数( GH 37996)Dataframe.__dir__() 添加“六月国家独立日”到USFederalHolidayCalendar( GH 44574 ) Rolling.var()、、、现在支持使用关键字执行Numba ( GHExpanding.var() 44461 )Rolling.std()Expanding.std()engine Series.info()已添加,以便与DataFrame.info()( GH 5167 )兼容 实施IntervalArray.min()并IntervalArray.max(),其结果是min,max现在为和IntervalIndex工作Series(GH 44746)DataFrameIntervalDtype UInt64Index.map()dtype现在尽可能保留( GH 44609) read_json()现在可以解析无符号 long long 整数 ( GH 26068 ) DataFrame.take()TypeError现在在为索引器传递标量时引发一个( GH 42875 ) is_list_like()现在将鸭子数组识别为类似列表,除非(GH 35131).ndim == 0 ExtensionDtype现在在使用(GH 20612、GH 44705)ExtensionArray导出 a 时进行(反)序列化DataFrameDataFrame.to_json()orient='table' 向/和朋友添加对Zstandard压缩的支持( GH 43925 )DataFrame.to_pickle()read_pickle() DataFrame.to_sql()现在返回int写入的行数(GH 23998) 值得注意的错误修复# 这些错误修复可能会带来显着的行为变化。 日期字符串解析不一致# dayfirst的选项并不to_datetime()严格,这可能会导致令人惊讶的行为: In [17]: pd.to_datetime(["31-12-2021"], dayfirst=False) Out[17]: DatetimeIndex(['2021-12-31'], dtype='datetime64[ns]', freq=None) dayfirst现在,当该值为分隔日期字符串(例如 31-12-2012)时,如果无法根据给定值解析日期字符串,则会发出警告。 忽略带有空或全 NA 列的 concat 数据类型# 笔记 此行为更改已在 pandas 1.4.3 中恢复。 当用于concat()连接两个或多个DataFrame对象时,如果其中一个 DataFrame 为空或具有全 NA 值,则 在查找连接的数据类型时有时会忽略其数据类型。这些现在始终不会被忽视(GH 43507)。 In [3]: df1 = pd.DataFrame({"bar": [pd.Timestamp("2013-01-01")]}, index=range(1)) In [4]: df2 = pd.DataFrame({"bar": np.nan}, index=range(1, 2)) In [5]: res = pd.concat([df1, df2]) 以前, in 中的 float-dtypedf2将被忽略,因此结果 dtype 将为datetime64[ns]。结果,np.nan将被转换为 NaT. 以前的行为: In [6]: res Out[6]: bar 0 2013-01-01 1 NaT 现在 float-dtype 受到尊重。由于这些 DataFrame 的通用数据类型是 object,因此np.nan保留了 。 新行为: In [6]: res Out[6]: bar 0 2013-01-01 00:00:00 1 NaN 在 value_counts 和模式中,空值不再被强制为 NaN 值# Series.value_counts()并且Series.mode()不再将 和其他 null 值强制转换None为 -dtypeNaT的 NaN 值np.object_。此行为现在与unique、isin和其他人一致 ( GH 42688 )。 In [18]: s = pd.Series([True, None, pd.NaT, None, pd.NaT, None]) In [19]: res = s.value_counts(dropna=False) 以前,所有空值都被替换为 NaN 值。 以前的行为: In [3]: res Out[3]: NaN 5 True 1 dtype: int64 现在空值不再被破坏。 新行为: In [20]: res Out[20]: None 3 NaT 2 True 1 Name: count, dtype: int64 read_csv 中的 mangle_dupe_cols 不再重命名与目标名称冲突的唯一列# read_csv()不再重命名与重复列的目标名称冲突的唯一列标签。已存在的列将被跳过,即下一个可用索引用于目标列名称 ( GH 14704 )。 In [21]: import io In [22]: data = "a,a,a.1\n1,2,3" In [23]: res = pd.read_csv(io.StringIO(data)) 以前,第二列称为a.1,而第三列也重命名为a.1.1。 以前的行为: In [3]: res Out[3]: a a.1 a.1.1 0 1 2 3 a.1现在,重命名会在更改第二列的名称时检查是否已存在并跳转该索引。第二列改为重命名为 a.2。 新行为: In [24]: res Out[24]: a a.2 a.1 0 1 2 3 unstack 和 hub_table 不再因超出 int32 限制的结果引发 ValueError # 以前,如果操作可以产生包含多个元素的结果 ,则DataFrame.pivot_table()andDataFrame.unstack()会引发异常。此操作现在会引发 ( GH 26314 )。ValueError2**31 - 1errors.PerformanceWarning 以前的行为: In [3]: df = DataFrame({"ind1": np.arange(2 ** 16), "ind2": np.arange(2 ** 16), "count": 0}) In [4]: df.pivot_table(index="ind1", columns="ind2", values="count", aggfunc="count") ValueError: Unstacked DataFrame is too big, causing int32 overflow 新行为: In [4]: df.pivot_table(index="ind1", columns="ind2", values="count", aggfunc="count") PerformanceWarning: The following operation may generate 4294967296 cells in the resulting pandas object. groupby.apply一致变换检测# DataFrameGroupBy.apply()并且SeriesGroupBy.apply()被设计得非常灵活,允许用户执行聚合、转换、过滤,并将其与可能不属于任何这些类别的用户定义函数一起使用。作为其中的一部分,apply 将尝试检测操作何时是转换,在这种情况下,结果将具有与输入相同的索引。为了确定该操作是否是转换,pandas 将输入的索引与结果的索引进行比较,并确定它是否已发生变异。之前在 pandas 1.3 中,不同的代码路径使用不同的“mutated”定义:有些会使用 Python is ,而另一些则仅测试是否相等。 这种不一致已被消除,pandas 现在测试是否相等。 In [25]: def func(x): ....: return x.copy() ....: In [26]: df = pd.DataFrame({'a': [1, 2], 'b': [3, 4], 'c': [5, 6]}) In [27]: df Out[27]: a b c 0 1 3 5 1 2 4 6 以前的行为: In [3]: df.groupby(['a']).apply(func) Out[3]: a b c a 1 0 1 3 5 2 1 2 4 6 In [4]: df.set_index(['a', 'b']).groupby(['a']).apply(func) Out[4]: c a b 1 3 5 2 4 6 在上面的示例中,第一个使用 pandas 使用的代码路径is并确定这func不是转换,而第二个测试是否相等并确定这func是一个转换。在第一种情况下,结果的索引与输入的索引不同。 新行为: In [5]: df.groupby(['a']).apply(func) Out[5]: a b c 0 1 3 5 1 2 4 6 In [6]: df.set_index(['a', 'b']).groupby(['a']).apply(func) Out[6]: c a b 1 3 5 2 4 6 现在在这两种情况下都确定这func是一个变换。在每种情况下,结果都具有与输入相同的索引。 向后不兼容的 API 更改# 增加了 Python 的最低版本# pandas 1.4.0 支持 Python 3.8 及更高版本。 增加了依赖项的最低版本# 更新了一些依赖项的最低支持版本。如果安装了,我们现在需要: 包裹 最低版本 必需的 改变了 麻木 1.18.5 X X 皮茨 2020.1 X X python-dateutil 2.8.1 X X 瓶颈 1.3.1 X 数值表达式 2.7.1 X pytest(开发) 6.0 mypy(开发) 0.930 X 对于可选库,一般建议使用最新版本。下表列出了当前在 pandas 开发过程中测试的每个库的最低版本。低于最低测试版本的可选库可能仍然有效,但不被视为受支持。 包裹 最低版本 改变了 美丽汤4 4.8.2 X 快速镶木地板 0.4.0 FS规范 0.7.4 GCSFS 0.6.0 lxml 4.5.0 X 绘图库 3.3.2 X 努巴 0.50.1 X 开放式pyxl 3.0.3 X pandas-GBQ 0.14.0 X 皮箭头 1.0.1 X pymysql 0.10.1 X pytables 3.6.1 X s3fs 0.4.0 scipy 1.4.1 X sqlalchemy 1.4.0 X 制表 0.8.7 阵列 0.15.1 X xlrd 2.0.1 X XLSX作家 1.2.2 X xlwt 1.3.0 有关更多信息,请参阅依赖项和可选依赖项。 其他 API 更改# Index.get_indexer_for()不再接受关键字参数(除了target);在过go,如果索引不唯一(GH 42310),这些将被默默地忽略 min_rows由于文档字符串的更改而导致参数位置的更改DataFrame.to_string()(GH 44304) 减少操作DataFrame或Series现在提高ValueError何时None通过skipna(GH 44178) read_csv()当标题行之一仅包含列时,不再read_html()引发错误Unnamed:(GH 13054) 更改了name几个假期的属性以 专门USFederalHolidayCalendar匹配官方联邦假期名称 : “元旦”获得所有格撇号 “总统日”变成“华盛顿生日” “马丁·路德·金日”现在是“马丁·路德·金生日”。 “7 月 4 日”现在是“独立日” “感恩节”现在是“感恩节” “圣诞节”现在是“圣诞节” 添加了“六月独立日” 弃用# 已弃用 Int64Index、UInt64Index 和 Float64Index # Int64Index,UInt64Index并Float64Index已被弃用,取而代之的是基类Index,并将在 Pandas 2.0 中删除(GH 43028)。 为了构建数字索引,您可以使用基Index类而不是指定数据类型(这也适用于较旧的 pandas 版本): # replace pd.Int64Index([1, 2, 3]) # with pd.Index([1, 2, 3], dtype="int64") 要检查索引对象的数据类型,您可以将isinstance 检查替换为检查dtype: # replace isinstance(idx, pd.Int64Index) # with idx.dtype == "int64" 目前,为了保持向后兼容性,调用Index 将继续返回, Int64Index当给定数字数据时,但将来, 将返回 an 。UInt64IndexFloat64IndexIndex 当前行为: In [1]: pd.Index([1, 2, 3], dtype="int32") Out [1]: Int64Index([1, 2, 3], dtype='int64') In [1]: pd.Index([1, 2, 3], dtype="uint64") Out [1]: UInt64Index([1, 2, 3], dtype='uint64') 未来的行为: In [3]: pd.Index([1, 2, 3], dtype="int32") Out [3]: Index([1, 2, 3], dtype='int32') In [4]: pd.Index([1, 2, 3], dtype="uint64") Out [4]: Index([1, 2, 3], dtype='uint64') 已弃用 DataFrame.append 和 Series.append # DataFrame.append()已Series.append()被弃用,并将在未来版本中删除。请改用pandas.concat()(GH 35407)。 已弃用的语法 In [1]: pd.Series([1, 2]).append(pd.Series([3, 4]) Out [1]: <stdin>:1: FutureWarning: The series.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead. 0 1 1 2 0 3 1 4 dtype: int64 In [2]: df1 = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB')) In [3]: df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB')) In [4]: df1.append(df2) Out [4]: <stdin>:1: FutureWarning: The series.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead. A B 0 1 2 1 3 4 0 5 6 1 7 8 推荐语法 In [28]: pd.concat([pd.Series([1, 2]), pd.Series([3, 4])]) Out[28]: 0 1 1 2 0 3 1 4 dtype: int64 In [29]: df1 = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB')) In [30]: df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB')) In [31]: pd.concat([df1, df2]) Out[31]: A B 0 1 2 1 3 4 0 5 6 1 7 8 其他弃用# 已弃用Index.is_type_compatible()(GH 42113) method中已弃用的参数Index.get_loc(),请改用( GH 42269 )index.get_indexer([label], method=...) Series.__setitem__()当索引Float64Index不包含键、IntervalIndex没有包含键的条目或MultiIndex前导Float64Index级别不包含键时,不建议将整数键视为位置键 ( GH 33469 ) 不建议将对象与时区一起numpy.datetime64传递给构造函数时将其视为 UTC 时间。Timestamp在未来的版本中,这些将被视为墙时间。要保留旧行为,请使用Timestamp(dt64).tz_localize("UTC").tz_convert(tz)( GH 24559 ) 在使用 a 级别的标签序列进行索引时,不推荐忽略丢失的标签MultiIndex(GH 42351) Series创建一个没有 a 的空dtype现在将引发一个更明显的FutureWarning而不是DeprecationWarning( GH 30017 ) 弃用了、和kind中的参数;在未来的版本中,传递将引发(GH 42857)Index.get_slice_bound()Index.slice_indexer()Index.slice_locs()kind Rolling已弃用删除、Expanding和聚合中的干扰列EWM( GH 42738 ) 已弃用Index.reindex()非唯一Index( GH 42568 ) 已弃用Styler.render(),取而代之的是Styler.to_html()(GH 42140) 已弃用Styler.hide_index()并Styler.hide_columns()赞成Styler.hide()(GH 43758) 已弃用将字符串列标签传递到timesin DataFrame.ewm()( GH 43265 ) 弃用了中的include_start和参数;在未来的版本中通过或将提高(GH 40245)include_endDataFrame.between_time()include_startinclude_end 弃用了、和 的squeeze参数。用户应改为挤压之后(GH 43242)read_csv()read_table()read_excel()DataFrame.squeeze("columns") 弃用了构造index参数SparseArray(GH 23089) 反对closed论证date_range()并bdate_range()赞成inclusive论证;在未来的版本中,传递closed将引发(GH 40245) 已弃用Rolling.validate(), Expanding.validate(), 和ExponentialMovingWindow.validate()( GH 43665 ) 已弃用静默删除TypeError在Series.transform和DataFrame.transform与字典一起使用时引发 a 的列 ( GH 43740 ) 已弃用静默删除引发 a TypeError、和in 、、、 和与列表一起使用时的DataError某些情况的列 ( GH 43740 )ValueErrorSeries.aggregate()DataFrame.aggregate()Series.groupby.aggregate()DataFrame.groupby.aggregate() 当时区不匹配时将时区感知值设置到时区感知Series或列时,已弃用转换行为。DataFrame以前此转换为对象数据类型。在未来版本中,插入的值将转换为系列或列的现有时区 ( GH 37605 ) 将时区不匹配的项目传递给DatetimeIndex.insert()、DatetimeIndex.putmask()、DatetimeIndex.where() DatetimeIndex.fillna()、Series.mask()、 、Series.where()、Series.fillna()、Series.shift()、(和列类似物)时已弃用的强制转换行为。在过go,这已转换为 object 。在未来的版本中,这些会将传递的项目投射到索引或系列的时区(GH 37605,GH 44940)Series.replace()Series.reindex()DataFramedtype 已弃用andprefix中的关键字参数,在未来版本中该参数将被删除(GH 43396)read_csv()read_table() 已弃用将非布尔参数传递给sortin concat()( GH 41518 ) 已弃用将参数传递为read_fwf()除filepath_or_buffer( GH 41485 )以外的位置 已弃用将参数传递为read_xml()除path_or_buffer( GH 45133 )以外的位置 已弃用传递skipna=Noneand DataFrame.mad(),Series.mad()改为传递skipna=True( GH 44580 ) to_datetime()弃用了带有字符串“now”的行为utc=False;在未来的版本中,这将匹配Timestamp("now"),进而匹配Timestamp.now()返回本地时间(GH 18705) 已弃用DateOffset.apply(),请改用 ( GH 44522 )offset + other ( GH 44916 )names中已弃用的参数Index.copy() 现在显示弃用警告,指示参数签名可能会更改并在未来版本中DataFrame.to_latex()模拟更多参数( GH 44411)Styler.to_latex() concat()已弃用 bool-dtype 和 numeric-dtypes 对象之间的行为;在未来的版本中,这些将转换为对象数据类型,而不是将布尔值强制转换为数值(GH 39817) 已弃用Categorical.replace(),请Series.replace()改用 ( GH 44929 ) 已弃用传递set或dict作为DataFrame.loc.__setitem__(), DataFrame.loc.__getitem__(), Series.loc.__setitem__(), Series.loc.__getitem__(), ,DataFrame.__getitem__()和Series.__getitem__()( Series.__setitem__()GH 42825 )的索引器 已弃用Index.__getitem__()bool 键;用于index.values[key]获取旧行为(GH 44051) DataFrame.where()已弃用整数 dtypes中的逐列向下转型( GH 44597 ) 已弃用DatetimeIndex.union_many(),请DatetimeIndex.union()改用 ( GH 44091 ) 已弃用Groupby.pad(),取而代之的是Groupby.ffill()(GH 33396) 已弃用Groupby.backfill(),取而代之的是Groupby.bfill()(GH 33396) 已弃用Resample.pad(),取而代之的是Resample.ffill()(GH 33396) 已弃用Resample.backfill(),取而代之的是Resample.bfill()(GH 33396) 已numeric_only=None弃用DataFrame.rank();在未来的版本中numeric_only必须是True或False(默认)( GH 45036 ) 已弃用 的行为Timestamp.utcfromtimestamp(),将来它将返回时区感知的 UTC Timestamp( GH 22451 ) 已弃用NaT.freq()(GH 45071) 当传递包含忽略 dtype 参数的整数 dtype 的浮点 dtype 数据时,已弃用的行为Series和构造;在未来的版本中,这将提高(GH 40110)DataFrameNaN Series.to_frame()弃用了和时Index.to_frame()忽略参数的行为。目前,这意味着保留现有名称,但将来显式传递将设置为结果 DataFrame 中的列名称(GH 44212)namename=Nonename=NoneNone 性能改进# DataFrameGroupBy.sample()和的性能改进SeriesGroupBy.sample(),特别是在weights提供参数时(GH 34483) 将非字符串数组转换为字符串数组时的性能改进(GH 34483) 用户定义函数的性能改进DataFrameGroupBy.transform()(GH 41598)SeriesGroupBy.transform() 构造DataFrame对象的性能改进(GH 42631、GH 43142、GH 43147、GH 43307、GH 43144、GH 44826) 提供参数DataFrameGroupBy.shift()时SeriesGroupBy.shift()的性能改进( GH 26615)fill_value 没有缺失值的数据的DataFrame.corr()性能改进( GH 40956)method=pearson DataFrameGroupBy.apply()某些操作的性能改进SeriesGroupBy.apply()(GH 42992、GH 43578) 性能改进read_stata()(GH 43059、GH 43227) read_sas()( GH 43333 )的性能改进 to_datetime()dtypes的性能改进uint(GH 42606) 性能改进设置为to_datetime()( GH 43901 )infer_datetime_formatTrue Series.sparse.to_coo()( GH 42880 )的性能改进 使用UInt64Index( GH 43862 )提高索引性能 使用Float64Index( GH 43705 )提高索引性能 使用非唯一索引时的性能改进Index(GH 43792) MultiIndex在( GH 43370 )上使用类似列表的索引器进行索引的性能改进 MultiIndex使用另一个索引器进行索引时的性能改进MultiIndex( GH 43370 ) DataFrameGroupBy.quantile()和SeriesGroupBy.quantile()( GH 43469、GH 43725 ) 的性能改进 DataFrameGroupBy.count()和SeriesGroupBy.count()( GH 43730、GH 43694 )的性能改进 DataFrameGroupBy.any()、SeriesGroupBy.any()、DataFrameGroupBy.all()和SeriesGroupBy.all()( GH 43675、GH 42841 )的性能改进 DataFrameGroupBy.std()和SeriesGroupBy.std()( GH 43115、GH 43576 ) 的性能改进 DataFrameGroupBy.cumsum()和SeriesGroupBy.cumsum()( GH 43309 )的性能改进 SparseArray.min()并且SparseArray.max()不再需要转换为密集数组(GH 43526) SparseArray使用with索引到aslice不再step=1需要转换为密集数组 ( GH 43777 ) 性能改进( GHSparseArray.take() 43654 )allow_fill=False Rolling.mean()、Expanding.mean()、Rolling.sum()、Expanding.sum()、Rolling.max()和Expanding.max()的性能改进(Rolling.min()GH 43612、GH 44176、GH 45170)Expanding.min()engine="numba" 当文件编码为 UTF-8 时,改进了pandas.read_csv()with的性能( GH 43787)memory_map=True RangeIndex.sort_values()覆盖方面的性能改进Index.sort_values()(GH 43666) RangeIndex.insert()( GH 43988 )中的性能改进 Index.insert()( GH 43953 )的性能改进 DatetimeIndex.tolist()( GH 43823 )的性能改进 DatetimeIndex.union()( GH 42353 )的性能改进 Series.nsmallest()( GH 43696 )中的性能改进 DataFrame.insert()( GH 42998 )中的性能改进 DataFrame.dropna()( GH 43683 )的性能改进 DataFrame.fillna()( GH 43316 )的性能改进 DataFrame.values()( GH 43160 )的性能改进 DataFrame.select_dtypes()( GH 42611 )的性能改进 减少性能改进DataFrame(GH 43185、GH 43243、GH 43311、GH 43609) Series.unstack()和DataFrame.unstack()( GH 43335、GH 43352、GH 42704、GH 43025 )的性能改进 Series.to_frame()( GH 43558 )的性能改进 Series.mad()( GH 43010 )的性能改进 merge()( GH 43332 )的性能改进 to_csv()当索引列是日期时间并格式化时的性能改进( GH 39413) to_csv()当MultiIndex包含大量未使用的级别时的性能改进( GH 37484) 使用数字列设置read_csv()时的性能改进( GH 44158)index_col concat()( GH 43354 )的性能改进 SparseArray.__getitem__()( GH 23122 )中的性能改进 DataFrame从类似数组的对象(如张量)构造 a 的性能改进Pytorch(GH 44616) Bug修复# 分类# 将与 dtype 不兼容的值设置为Categorical(或Series由DataFrame)Categorical提升ValueError而不是TypeError(GH 41919)中的错误 传递与Categorical.searchsorted()数据类型不兼容的值时出现错误(GH 41919)KeyErrorTypeError Categorical.astype()转换日期时间和Timestampdtype 的 int 时出现错误object(GH 44930) Series.where()传递与CategoricalDtype数据类型不兼容的值时出现错误,ValueError而不是TypeError(GH 41919) 传递与Categorical.fillna()数据类型不兼容的值时出现错误(GH 41919)ValueErrorTypeError Categorical.fillna()使用类似元组的类别提升ValueError而不是TypeError填充非类别元组时出现错误( GH 41919) 类似日期时间# 构造函数中的错误DataFrame不必要地复制非日期时间类 2D 对象数组(GH 39272) 窃听to_datetime()并format正在pandas.NA提高ValueError(GH 42957) to_datetime()如果无法遵守给定的选项,将默默地交换MM/DD/YYYY和DD/MM/YYYY格式化dayfirst- 现在,在分隔日期字符串的情况下会发出警告(例如31-12-2012)(GH 12585) 当=和 set 在一侧闭合时,错误date_range()并且bdate_range()不返回右界( GH 43394)startend DatetimeIndexorTimedeltaIndex与DatetimeArrayor的就地加法和减法错误TimedeltaArray( GH 43904 ) 调用np.isnan、np.isfinite或np.isinf时区感知时DatetimeIndex错误地引发错误TypeError(GH 43917) Series使用混合时区错误地部分推断日期时间值(GH 40111)构建类似日期时间的字符串时出现错误 除了一个Tick对象和一个np.timedelta64对象错误地引发而不是返回之外的错误Timedelta(GH 44474) np.maximum.reduce现在,在使用或dtype 操作、或np.minimum.reduce时可以正确返回Timestamp和Timedelta对象(GH 43923)SeriesDataFrameIndexdatetime64[ns]timedelta64[ns] 将对象添加np.timedelta64到对象BusinessDay或CustomBusinessDay对象时错误地引发错误(GH 44532) Index.insert()插入错误np.datetime64,np.timedelta64或tuple使用负 loc 添加Index和替换现有值(GH 44509)dtype='object'None Timestamp.to_pydatetime()无法保留属性的错误fold(GH 45087) Series.mode()错误地DatetimeTZDtype返回时区天真和错误地提升PeriodDtype(GH 41927) 修复了在reindex()将不兼容的填充值与类似日期时间的数据类型一起使用时引发错误的回归(或者不引发使用 a 作为填充值的弃用警告datetime.date)(GH 42921) DateOffset另外,Timestampwhere 的错误offset.nanoseconds不会包含在结果中(GH 43968、GH 36589) Timestamp.fromtimestamp()不支持该论点的错误tz(GH 45083) DataFrame从索引 dtypes 不匹配的 dict 构建中的错误Series有时会根据传递的 dict 的顺序而引发(GH 44091) 某些 DST 转换期间的哈希错误Timestamp导致分段错误(GH 33931和GH 40817) 时间增量# 对 all-或具有 object-dtype 数组的列进行除法时出现错误NaT TimeDeltaIndex,例如数字无法将结果推断为 timedelta64-dtype ( GH 39750 )SeriesDataFrame timedelta64[ns]使用标量返回垃圾值的数据楼层划分中的错误( GH 44466) 现在Timedelta正确考虑了任何 kwarg 的任何纳秒贡献(GH 43764,GH 45227) 时区# to_datetime()无法正确infer_datetime_format=True解析零 UTC 偏移 ( ) 的错误Z( GH 41047 ) 在withSeries.dt.tz_convert()中重置索引时出现错误(GH 43080)SeriesCategoricalIndex 减go两个时区不匹配的时区感知对象时出现错误Timestamp并DatetimeIndex错误地引发 a ( GH 31793 )TypeError 数字# 通过错误的提升对整数列表或元组进行底除的错误Series(GH 44674) 使用列DataFrame.rank()提升时的错误和(GH 41931)ValueErrorobjectmethod="first" DataFrame.rank()将缺失值和极值视为相等的错误(例如np.nan和),导致使用或np.inf时结果不正确(GH 41931)na_option="bottom"na_option="top numexpr当选项compute.use_numexpr设置为False(GH 32556)时,引擎中的错误仍在使用 DataFrame子类的算术运算中的错误,其_constructor()属性是除子类本身之外的可调用项(GH 43201) 算术运算中的错误涉及RangeIndex结果不正确的地方name(GH 43962) 算术运算中的错误涉及当操作数具有匹配的 NA 或匹配的元组名称时Series结果可能不正确的位置( GH 44459)name 除法IntegerDtype或BooleanDtype数组和 NA 标量错误地引发错误 ( GH 44685 ) Series将 a与FloatingDtype类似 timedelta 的标量相乘时错误地提升的错误( GH 44772 ) 转换# UInt64Index传递包含小到足以转换为 int64 的正整数和太大而无法保存在 int64 中的整数的列表时,构造函数中存在错误( GH 42201) 构造函数中的错误Series对于 dtypeint64和Falsedtype 的缺失值返回 0 bool(GH 43017、GH 43018) DataFrame从行为与等价物不同的PandasArray包含对象构造 a 时出现错误(GH 43986)Seriesnp.ndarray IntegerDtype不允许从字符串数据类型强制转换的错误( GH 25472) 错误to_datetime()与arg:xr.DataArray指定unit="ns"加薪TypeError(GH 44053) DataFrame.convert_dtypes()当子类未重载时不返回正确类型的错误_constructor_sliced()(GH 43201) 不从原始版本DataFrame.astype()传播的错误(GH 44414)attrsDataFrame DataFrame.convert_dtypes()结果丢失的错误columns.names(GH 41435) 从 pyarrow 数据构建IntegerArray无法验证 dtypes 的错误(GH 44891) Series.astype()不允许从 a 转换PeriodDtype为dtype 的错误datetime64,与PeriodIndex行为不一致 ( GH 45038 ) 字符串# 在未安装 pyarrow 时检查string[pyarrow]dtype 时错误地引发错误 ( GH 44276 )ImportError 间隔# 当调用不应替换任何内容时错误Series.where()地引发错误( GH 44181)IntervalDtypewhere 索引# 错误Series.rename()与MultiIndex并level提供(GH 43659) DataFrame.truncate()当Series.truncate()对象的Index长度大于一但只有一个唯一值时出现错误( GH 42365) 当使用元组进行索引Series.loc()时,其中一个级别也是元组(GH 27591)DataFrame.loc()MultiIndex Series.loc()第一个级别MultiIndex仅包含值的错误np.nan(GH 42055) Series传递字符串时在 a或DataFramea上建立索引的错误DatetimeIndex,返回类型取决于索引是否单调(GH 24892) MultiIndex当索引器是包含类似日期时间的字符串的元组时,索引中无法删除标量级别的错误( GH 42476) DataFrame.sort_values()在传递升序值时出现错误Series.sort_values(),无法提高或错误地提高ValueError(GH 41634) pandas.Series使用布尔索引更新值时的错误,通过使用pandas.DataFrame.pop()(GH 42530)创建 Index.get_indexer_non_unique()当索引包含多个时出现错误np.nan(GH 35392) 错误DataFrame.query()未处理反引号列名称中的度数符号,例如“Temp(°C)”,在表达式中用于查询DataFrame( GH 42826 ) 错误消息在DataFrame.drop()引发时未显示带有逗号的缺失标签KeyError(GH 42881) 安装包DataFrame.query()时查询字符串中的方法调用导致错误的错误( GH 22435 )numexpr DataFrame.nlargest()排序结果中的错误Series.nlargest()未计算包含np.nan(GH 28984)的索引 Index在具有 NA 标量的非唯一对象数据类型上建立索引时出现错误(例如np.nan)(GH 43711) DataFrame.__setitem__()当新数据类型和旧数据类型匹配时,错误地写入现有列的数组而不是设置新数组的错误( GH 43406) Series当这些值可以无损转换为整数时,将浮动数据类型值设置为整数数据类型时无法设置到位的错误( GH 44316) Series.__setitem__()设置具有匹配大小的数组且 dtype='datetime64[ns]' 或 dtype='timedelta64[ns]' 错误地将日期时间/时间增量转换为整数时,对象 dtype出现错误( GH 43868) 当索引已经排序时,DataFrame.sort_index()哪里没有被尊重的错误( GH 43591)ignore_index=True Index.get_indexer_non_unique()当索引包含多个np.datetime64("NaT")and时出现错误np.timedelta64("NaT")(GH 43869) 当标量的边是浮点数并且值的边是整数时,将标量值设置Interval为Serieswith时出现错误( GH 44201)IntervalDtype Categorical将可解析为日期时间的字符串支持的值设置为无法解析这些字符串的DatetimeArray或Series或DataFrame列时出现错误( GH 44236)DatetimeArray 除了使用不必要的对象向上转换到(GH 44261)的设置Series.__setitem__()之外,还存在整数数据类型的错误int64rangeint64 使用Series.__setitem__()布尔掩码索引器设置长度为 1 的类似列表值时错误地广播该值(GH 44265) 当和设置为(GH 44575)时Series.reset_index()不忽略name参数的错误dropinplaceTrue DataFrame.loc.__setitem__()混合数据类型中的错误DataFrame.iloc.__setitem__()有时无法就地操作(GH 44345) 使用布尔键选择单个列时DataFrame.loc.__getitem__()错误地引发错误( GH 44322)。KeyError DataFrame.iloc()使用单列设置ExtensionDtype和设置 2D 值时出现错误,例如错误地提升 ( GH 44514 )df.iloc[:] = df.values DataFrame.iloc()使用单列ExtensionDtype和数组元组作为索引器设置值时出现错误( GH 44703) loc在带有或iloc使用具有负步骤的切片的列上建立索引时出现错误,并且ExtensionDtype列错误地提升(GH 44551) DataFrame.loc.__setitem__()当索引器完全打开时更改数据类型时出现错误False(GH 37550) IntervalIndex.get_indexer_non_unique()对于非唯一且非单调索引返回布尔掩码而不是整数数组的错误( GH 44084) IntervalIndex.get_indexer_non_unique()未正确处理dtype带有 NaN 的“对象”目标的错误( GH 44482) 修复了回归,其中单个列在添加到( GH 42376 )时np.matrix不再被强制为 1dnp.ndarrayDataFrame Series.__getitem__()将整数列表视为位置索引器的整数错误CategoricalIndex,与单个标量整数的行为不一致(GH 15470、GH 14865) Series.__setitem__()将浮点数或整数设置为整数 dtype 时出现的错误Series,在需要保留精度时无法向上转换(GH 45121) DataFrame.iloc.__setitem__()忽略轴参数中的错误( GH 45032) 丢失的# 错误DataFrame.fillna()且不limit忽略method或(GH 40989,GH 17399axis='columns')axis = 1 DataFrame.fillna()使用类似字典value和重复的列名称时不替换缺失值的错误( GH 43476) DataFrame使用字典np.datetime64作为值构造 a 时出现错误dtype='timedelta64[ns]',反之亦然,错误地转换而不是提升(GH 44428) 错误Series.interpolate()且未DataFrame.interpolate()就地inplace=True写入底层数组(GH 44749) 当 NA 值存在并且指定参数时Index.fillna(),错误地返回未填充的错误。现在这反而提高了;不要传递参数(GH 44873)IndexdowncastNotImplementedErrordowncast 即使没有删除任何条目,也会DataFrame.dropna()发生更改错误( GH 41965)Index 错误地忽略Series.fillna()了对象数据类型downcast="infer"(GH 44241) 多重索引# MultiIndex.get_loc()第一个级别是 aDatetimeIndex并且传递字符串键的错误( GH 42465) MultiIndex.reindex()传递level对应于级别的错误ExtensionDtype(GH 42043) MultiIndex.get_loc()提升TypeError而不是KeyError嵌套元组中的错误( GH 42440) 设置MultiIndex.union()错误sortorder导致后续切片索引操作出错(GH 44752) MultiIndex.putmask()另一个值也是 a 的错误MultiIndex(GH 43212) MultiIndex.dtypes()重复级别名称中的错误每个名称仅返回一种数据类型( GH 45174) 输入/输出# read_excel()尝试从 .xlsx 文件读取图表时出现错误( GH 41448 ) 当长度大于一时,json_normalize()where中的错误errors=ignore可能无法忽略缺失值( GH 41876)metarecord_path read_csv()多标头输入和参数引用列名称作为元组的错误( GH 42446) 错误,其中和read_fwf()的长度差异没有升高(GH 40830)colspecsnamesValueError Series.to_json()将DataFrame.to_json()普通 Python 对象序列化为 JSON 时跳过某些属性的错误( GH 42768、GH 33043) DataFrame从 sqlalchemy 的对象构造 时,列标题被删除Row( GH 40682 ) 取消Index使用对象 dtype 错误地推断数字 dtypes 时出现错误 ( GH 43188 ) read_csv()读取长度不等的多标头输入时错误地引发的错误IndexError(GH 43102) read_csv()以块读取文件时出现错误ParserError,并且某些块块的列数少于engine="c"( GH 21211 )的标题 中的错误read_csv(),当期望文件路径名或类文件对象时更改异常类从OSError到TypeError( GH 43366 ) 当指定为(GH 44021,GH 10261)时,错误read_csv()并read_fwf()忽略skiprows除第一个之外的所有内容nrowsengine='python' 设置read_csv()时将原始列保持为对象格式的错误( GH 13378)keep_date_col=True read_json()未正确处理非 numpy dtypes 的错误(尤其是category)(GH 21892、GH 33205) json_normalize()多字符sep参数错误地作为每个键的前缀的错误( GH 43831) json_normalize()读取缺少多级元数据的数据时不尊重的错误errors="ignore"(GH 44312) 如果设置为for ( GH 22144 ),read_csv()则使用第二行来猜测隐式索引中的错误headerNoneengine="python" 给出错误时无法read_csv()识别坏线(GH 22144)namesengine="c" 错误read_csv()withfloat_precision="round_trip"没有跳过初始/尾随空格(GH 43713) 在没有 lzma 模块的情况下构建 Python 时出现错误:即使未使用 lzma 功能,在 pandas 导入时也会发出警告(GH 43495) read_csv()未应用 dtype 的错误index_col(GH 9435) 转储/加载DataFrame时出现错误yaml.dump(frame)(GH 42748) 当长度大于但等于( GH 38453 )的数据行时read_csv()引发错误ValueErrornamesheaderengine="python" 错误ExcelWriter,engine_kwargs没有传递到所有引擎(GH 43442) 与色谱柱一起使用时read_csv()出现的错误(GH 8991)ValueErrorparse_datesMultiIndex read_csv()未引发指定为或与之冲突的ValueError错误(GH 43528)\ndelimiterseplineterminator to_csv()将分类日期时间转换为整数时出现错误Series(GH 40754) read_csv()日期解析失败后将列转换为数字的错误( GH 11019) 在尝试日期转换之前不将值read_csv()替换为错误( GH 26203)NaNnp.nan 尝试读取 .csv 文件并从可为空整数类型推断索引列 dtype 时read_csv()出现错误( GH 44079 )AttributeError to_csv()始终将不同格式的日期时间列强制为相同格式的错误( GH 21734) DataFrame.to_csv()并设置为Series.to_csv()不再创建包含以“.zip”结尾的文件的 zip 文件。相反,他们尝试更智能地推断内部文件名(GH 39465)compression'zip' 将read_csv()布尔值和缺失值的混合列读取到浮点类型会导致缺失值变为 1.0 而不是 NaN 的错误(GH 42808、GH 34120) to_xml()引发pd.NA扩展数组 dtype错误的错误( GH 43903 ) 同时在和read_csv()中传递解析器时出现错误,解析仍然被调用(GH 44366)date_parserparse_dates=False 当不是第一列时,未正确read_csv()设置列名称的错误( GH 38549)MultiIndexindex_col read_csv()无法创建内存映射文件时默默忽略错误的错误( GH 44766 ) read_csv()传递tempfile.SpooledTemporaryFile以二进制模式打开的错误时 ( GH 44748 ) 尝试解析包含“://”的 json 字符串时read_json()引发的错误( GH 36271)ValueError read_csv()何时engine="c"以及哪个错误encoding_errors=None导致了段错误(GH 45180) read_csv()无效值中的错误usecols导致未关闭的文件句柄(GH 45384) DataFrame.to_json()修复内存泄漏中的错误( GH 43877) 时期# 将对象添加Period到对象时np.timedelta64错误地引发错误TypeError(GH 44182) PeriodIndex.to_timestamp()当索引freq="B"推断freq="D"其结果而不是freq="B"(GH 44105)时出现错误 构造函数中的错误Period错误地允许np.timedelta64("NaT")(GH 44507) PeriodIndex.to_timestamp()为具有非连续数据的索引提供错误值的错误( GH 44100) 当调用不应替换任何内容时错误Series.where()地引发错误( GH 45135)PeriodDtypewhere 绘图# 当给定非数字数据时,DataFrame.boxplot()现在会引发 aValueError而不是神秘的KeyErroror ZeroDivisionError,与其他绘图函数(例如DataFrame.hist()(GH 43480))一致 分组/重新采样/滚动# 当底层为空时SeriesGroupBy.apply(),传递无法识别的字符串参数失败的错误(GH 42021)TypeErrorSeries Series.rolling.apply()、DataFrame.rolling.apply()和Series.expanding.apply()with中的错误DataFrame.expanding.apply()通过用户传递的函数进行缓存(engine="numba"GH 42287)*args DataFrameGroupBy.max()、SeriesGroupBy.max()、DataFrameGroupBy.min()和中的错误SeriesGroupBy.min(),可空整数数据类型丢失精度(GH 41743) 错误DataFrame.groupby.rolling.var()只会计算第一组的滚动方差(GH 42442) 错误DataFrameGroupBy.shift(),如果不是的话SeriesGroupBy.shift(),将返回分组列(GH 41556)fill_valueNone 当输入已排序并且大于或等于所有组大小(GH 15272、GH 16345、GH 29129)时,会出现错误SeriesGroupBy.nlargest()并且索引不一致SeriesGroupBy.nsmallest()Seriesn 中的错误pandas.DataFrame.ewm(),其中非 float64 dtypes 默默地失败(GH 42452) pandas.DataFrame.rolling()沿行 ( ) 的操作中的错误错误地忽略了包含和 的axis=1列( GH 41779 )float16float32 错误Resampler.aggregate()不允许使用命名聚合(GH 32803) 错误发生Series.rolling()时(GH 43016)Series dtypeInt64 DataFrame.rolling.corr()当DataFrame列是MultiIndex( GH 21157 )时出现错误 DataFrame.groupby.rolling()指定on和调用__getitem__随后返回不正确结果时出现的错误( GH 43355) DataFrameGroupBy.apply()基于SeriesGroupBy.apply()时间的对象中的错误在分组向量包含(GH 43500、GH 43515)的极端情况下Grouper错误地引发ValueErrorNaT dtype出现错误DataFrameGroupBy.mean()并SeriesGroupBy.mean()失败complex(GH 43701) 当索引减少时,错误Series.rolling()并且DataFrame.rolling()无法正确计算第一行的窗口边界( GH 43927)center=True Series.rolling()具有不均匀纳秒的居中日期时间窗口中的错误DataFrame.rolling()(GH 43997) 当至少选择两次列时出现错误DataFrameGroupBy.mean()并SeriesGroupBy.mean()引发( GH 44924)KeyError 错误DataFrameGroupBy.nth()和SeriesGroupBy.nth()失败axis=1(GH 43926) 如果索引包含重复项(GH 3944) ,则会出现错误Series.rolling()并且不尊重居中日期时间窗口的右边界DataFrame.rolling() 当使用返回不相等的开始和结束数组的子类Series.rolling()时,错误将出现段错误,而不是引发( GH 44470 )DataFrame.rolling()pandas.api.indexers.BaseIndexerValueError Groupby.nunique()不尊重分组列observed=True的错误categorical(GH 45128) Bug in DataFrameGroupBy.head(), SeriesGroupBy.head(), DataFrameGroupBy.tail(), 以及SeriesGroupBy.tail()不使用NaNwhen删除组dropna=True(GH 45089) GroupBy.__iter__()选择对象中的列子集后出现错误GroupBy,该子集返回所有列而不是所选子集(GH 44821) Groupby.rolling()当非单调数据传递时出现错误,无法正确引发ValueError(GH 43909) Series按数据类型categorical和长度不等于分组轴的a 进行分组的错误ValueError(GH 44179) 重塑# DataFrame改进了从多维创建列时的错误消息numpy.ndarray( GH 42463 ) 将 a与重复项和多个键连接时concat()创建MultiIndex重复级别条目时出现错误( GH 42651 )DataFrameIndex pandas.cut()重复Series索引和不精确的错误pandas.CategoricalIndex()(GH 42185,GH 42425) DataFrame.append()当附加列不匹配时无法保留数据类型的错误( GH 43392) concat()ofbool和dtypes中的错误boolean导致objectdtype 而不是booleandtype ( GH 42800 ) crosstab()当输入为分类时,存在以下错误: 、 和Series之一或两者中不存在某些类别。以前,缺失类别的边际值为。现在正确报告为 0 ( GH 43505 )Seriesmargins=TrueNaN 当参数全部具有相同的索引并且参数包含重复项时,错误concat()将失败(GH 43595)objskeys concat()忽略参数的错误sort(GH 43375) 在内部分配列时,参数的列索引merge()错误返回错误( GH 43734)MultiIndexon crosstab()当输入是列表或元组时,错误会失败( GH 44076) 附加对象列表时DataFrame.append()无法保留的错误(GH 44109)index.nameSeries 修复了方法中的元数据传播,从而修复了,和( GH 28283 ) 的Dataframe.apply()相同问题Dataframe.transform()Dataframe.nunique()Dataframe.mode() 如果所有级别仅包含缺失值,则将concat()级别转换为浮动时出现错误( GH 44900)MultiIndex DataFrame.stack()列错误地升高时出现错误ExtensionDtype(GH 43561) 使用关键字连接不同命名的索引时merge()引发的错误( GH 45094)KeyError Series.unstack()对象在结果列上执行不需要的类型推断时出现错误( GH 44595) MultiIndex.join()重叠级别的错误IntervalIndex(GH 44096) 错误DataFrame.replace()和结果因参数Series.replace()而异(GH 44864)dtyperegex 当索引DataFrame.pivot()为a时出现错误(GH 23955)index=NoneDataFrameMultiIndex 稀疏# 当列名称不唯一时DataFrame.sparse.to_coo()引发错误( GH 29564)AttributeError 错误插入SparseArray.max()并SparseArray.min()引发ValueError具有 0 个非空元素的数组 ( GH 43527 ) DataFrame.sparse.to_coo()默默地将非零填充值转换为零的错误( GH 24817) SparseArray具有不匹配长度的类似数组操作数的比较方法中的错误会根据输入而提升AssertionError或不清楚( GH 43863)ValueError SparseArray除以零时算术方法floordiv和行为中的错误mod与非稀疏Series行为不匹配(GH 38172) 一元方法中的错误SparseArray以及SparseArray.isna()不重新计算索引(GH 44955) 扩展数组# array()无法保存的错误PandasArray(GH 43887) NumPy ufuncs np.abs、np.positive、np.negative现在在分别实现 的 ExtensionArray 上调用时可以正确保留 dtype 。特别是这是固定的(GH 43899,GH 23316)__abs__, __pos__, __neg__TimedeltaArray NumPy ufuncs np.minimum.reduce np.maximum.reduce、np.add.reduce、np.prod.reduce现在可以正常工作,而不是使用or进行NotImplementedError提升(GH 43923,GH 44793)SeriesIntegerDtypeFloatDtype 带有关键字的 NumPy ufunc现在由带有and 的out数组支持( GH 45122 )IntegerDtypeFloatingDtype 使用具有扩展数据类型的许多列时避免PerformanceWarning引发碎片( GH 44098)DataFrame 错误IntegerArray和FloatingArray构造错误地将不匹配的 NA 值(例如np.timedelta64("NaT"))强制转换为数字 NA(GH 44514) 与不兼容的类型(如字符串)进行比较时出现错误BooleanArray.__eq__()并BooleanArray.__ne__()引发错误。如果包含可为空的布尔列,TypeError这DataFrame.replace()有时会引发错误( GH 44499)TypeError 当通过dtypearray()传递时错误地引发错误(GH 44715)ndarrayfloat16 调用np.sqrt返回BooleanArray格式错误时出现错误FloatingArray(GH 44715) 当NA 标量与数据类型(例如数字数据类型)不兼容Series.where()时错误地转换为兼容的 NA 值(GH 44697)ExtensionDtypeotherSeriesNaT Series.replace()显式传递value=None被视为未value传递且不None在结果中的错误( GH 36984、GH 19998) Series.replace()在无操作替换中进行不必要的向下转换时出现错误( GH 44498) Bug in Series.replace()with FloatDtype, string[python], 或string[pyarrow]dtype 在可能的情况下未被保留(GH 33484,GH 40732,GH 31644,GH 41215,GH 25438) 造型器# Styler初始化uuid时维护浮动下划线的错误( GH 43037) 如果使用某些参数调用方法,则更新对象的Styler.to_html()位置存在错误( GH 43034)Stylerto_html 先前未复制的Styler.copy()位置出现错误( GH 40675)uuid Styler.apply()在对齐索引标签方面,返回Series对象的函数未正确处理的错误( GH 13657、GH 42014) DataFrame使用命名渲染空时出现错误Index(GH 43305) 渲染单个关卡时出现错误MultiIndex( GH 43383 ) 组合非稀疏渲染和Styler.hide_columns()或时的错误Styler.hide_index()(GH 43464) Styler在( GH 44011 )中使用多个选择器时设置表格样式的错误 行修剪和列修剪无法反映隐藏行的错误(GH 43703、GH 44247) 其他# 错误DataFrame.astype()包含非唯一列和参数(GH 44417)Series dtype 当目标月份的开始(结束)已经是工作日时,CustomBusinessMonthBegin.__add__()( )中的错误CustomBusinessMonthEnd.__add__()不应用额外参数 ( GH 41356 )offset RangeIndex.union()与另一个RangeIndex匹配(偶数)的错误step并开始严格小于(GH 44019)step / 2 排序错误RangeIndex.difference()和sort=None排序step<0失败(GH 44085) ExtensionDtypesSeries.replace()中DataFrame.replace()的错误( GH 44270、GH 37899)value=None FloatingArray.equals()如果两个数组包含值,则无法将其视为相等的错误np.nan(GH 44382) 当传递不兼容时,错误DataFrame.shift()和列错误地引发( GH 44564)axis=1ExtensionDtypefill_value 错误DataFrame.shift()与axis=1大于periods产生len(frame.columns)无效DataFrame(GH 44978) DataFrame.diff()传递 NumPy 整数对象而不是对象时出现错误int(GH 44572) 与包含值一起使用时Series.replace()引发的错误(GH 43344)ValueErrorregex=TrueSeriesnp.nan 当缺失的名称被替换为(GH 44818)时使用DataFrame.to_records()不正确的错误nlevel_n 参数覆盖默认解析器的DataFrame.eval()错误(GH 34966)resolvers Series.__repr__()不再DataFrame.__repr__()用“NaN”替换索引中的所有空值,而是使用它们真正的字符串表示形式。 “NaN”仅用于float("nan")(GH 45263) 贡献者# 共有 275 人为此版本贡献了补丁。名字带有“+”的人首次贡献了补丁。 阿布舍克·R 阿尔伯特·维拉诺瓦·德尔·莫拉尔 亚历山德罗·比西亚尼 + 亚历克斯·林 亚历克斯-格雷戈里-1 + 亚历山大·戈罗德茨基 亚历山大·雷盖罗 + 阿列克谢·杰里 亚历克西斯·米尼翁 阿莱斯·埃哈韦茨 阿里·麦克马斯特 不在场证明 + 安德烈·巴托蒙库耶夫 + 安德鲁·埃卡特 + 安德鲁·豪鲁克 安德鲁·伍德 安东·洛德 + 阿明·贝尔雷斯 + 阿鲁什·夏尔马 + 本尼迪克特·海德里希 + 贝尼·比恩茨 + 伯努瓦·维诺 伯特·帕尔姆+ 鲍里斯·鲁缅采夫 + 布赖恩·休莱特 布罗克 布鲁诺·科斯塔+ 布莱恩·拉西克 + 迦勒·爱泼斯坦 何志坚 克里斯托弗·考夫曼 + 克里斯托弗·叶 + 肖楚良 + 克劳迪娅·银 + 帝斯曼 丹尼尔·科尔 + 丹尼尔·施密特 + 戴尔·阿德乌米 大卫+ 大卫·桑德斯 + 大卫·威尔士 + 蒋德赞 + 狡猾实验室+ 德鲁夫·B·谢蒂 + 迪格雷斯45 + 多米尼克·库特拉 + 德鲁·莱维特 + 德里斯 埃德·阿巴蒂 埃勒 埃利奥特·兰波诺 恩德烈·马克·博尔扎 埃尔凡·纳里曼 叶夫根尼·瑙莫夫 + 埃乌特·特尔霍芬 + 李芳辰 菲利克斯·迪沃 菲利克斯·杜利斯 + 弗朗西斯科·安德烈乌齐 + 弗朗索瓦·迪翁 + 弗兰斯·拉尔森 + 弗雷德·赖斯 吉万 加布里埃尔·迪·帕迪·阿鲁达 + 格萨·施图佩里奇 贾科莫·卡里亚 + 格雷格·西亚诺 + 格里芬·安塞尔 小笠原宏明 + 贺拉斯+ 黎浩然 + 欧夫·勒斯蒂格 艾萨克·维尔舒普 JHM 达比郡 (MBP) JHM 达比郡 (iMac) JHM 达比郡 + 刘杰克 雅各布·斯克维尔斯克 + 海梅·迪·克里斯蒂娜 + 詹姆斯·霍尔科姆 + 贾诺什·里伯塞尔 + 贾罗德·米尔曼 边杰森 + 杰夫·雷巴克 耶内·马科夫塞克 + 吉姆·布拉德利 + 乔尔·吉布森 + 乔珀·德弗洛普 + 约翰内斯·穆勒 + 约翰·S·博加特 + 约翰·赞格威尔 + 乔恩·海茨·勒加雷塔·戈罗尼奥 + 乔恩·威金斯 + 乔纳斯·哈格 + 乔里斯·范登博什 乔什·弗里德兰德 何塞·杜阿尔特 + 朱利安·弗莱舍 + 朱利安·德拉布鲁埃-T 贾斯汀·麦奥米 卡达塔特卢·基肖尔 + 董凯琪 卡西夫·汗 + 卡维亚9986 + 肯德尔+ 凯文·谢泼德 凯利·休伊特 科恩·罗洛夫斯 + 克里希纳·奇武库拉 克里希纳赛2020 莱昂纳多·弗雷阿 + 莱昂纳多·陈 谢良吉 + 卢瓦克·迪里多卢 + 洛伦佐·马菲奥利 + 卢克·曼利 + 登月+ 马克·加西亚 马塞尔·比塔 + 马塞尔·格伯 + 马可·爱德华·戈雷利 马可·戈雷利 马可·戈雷利 马文+ 马特乌斯·皮奥特罗斯基 + 马蒂亚斯·豪瑟 + 马特·理查兹 + 马修·戴维斯 + 马修·罗斯克 马修·泽特林 马蒂亚斯·布索尼耶 马蒂·皮库斯 毛罗·西尔伯伯格 + 马克西姆·伊万诺夫 马克西米利安·卡尔 + 米塞克斯机器 迈克尔·扎拉青 + 迈克尔·王+ 米哈乌·戈尔尼 + 迈克·冯 + 迈克·塔夫斯 + 穆罕默德·侯赛因·赖因 + NJOKU OKECHUKWU 情人节 + 尼尔·麦克伯内特 + 尼克·安德森 + 尼基塔·索博列夫 + 奥利维尔·卡瓦迪蒂 + 帕斯托尔+ 熊猫开发团队 帕特里克·赫夫勒 彼得 彼得·蒂尔曼 + 普拉巴·阿里瓦拉甘 + 帕杜姆纳·拉胡尔 普雷纳·查克拉博蒂 普里特维吉特 + 拉胡尔·盖克瓦德 + 雷·贝尔 里卡多·马丁斯 + 理查德·沙德拉赫 罗伯特-扬特霍恩 + 罗伯特·沃耶 + 罗宾·雷蒙德 + 罗汉·夏尔马 + 罗汉·西罗希亚 + 罗曼·尤尔恰克 阮·比勒陀利亚 + 山姆·詹姆斯 + 斯科特·塔尔伯特 沙什瓦·夏尔马 + 谢尔格拉27 + 希夫·古普塔 肖汉姆·德布纳斯 西蒙·霍金斯 苏米亚+ 斯坦·韦斯特 + 斯蒂芬妮·莫林 + 斯特凡诺·阿尔贝托·鲁索 + 史蒂芬·赫塞尔曼 斯蒂芬 苏亚什·古普塔 + 斯文 天鹅堡01 + 西尔万·玛丽 + 劳夫 塔尼亚·阿拉德 + 特尔吉·彼得森 衍生者+ 托马斯·迪克森 托马斯·卡斯特尔 + 托马斯·克鲁弗 托马斯·李 托马斯·史密斯 蒂姆·斯瓦斯特 蒂姆·特兰 + 托拜厄斯·麦克纳尔蒂 + 托比亚斯·皮特斯 中川智树 + 托尼·赫斯特 + 托斯顿·沃特温 六木+ 瓦伊巴夫 K + 瓦伦丁·奥利弗·洛夫特森 + 瓦伦·施里瓦斯塔瓦 + 维韦克·塔扎塔提尔 + 维姆·帕塔克 司文俊 威廉·安德烈 + 威廉·布拉德利 + 沃伊切赫·萨多夫斯基 + 黄耀庆 + 亚什·古普塔 + 雅尼斯·哈吉查拉兰波斯 + 吉树·巴斯克斯·巴埃萨 耿元浩 尤里·米哈伊洛夫 伊万·盖特 + 伊夫·戴利 + 扎克·雷特 兹比谢克·克罗利科夫斯基 + 零+ 哲园 吴志毅 + 艾迪罗格 阿里·萨亚+ 阿内什98 + 阿普塔尔卡 2019年+ 攻击68 布兰德鲁里 + 冒泡橡木 + 卡尔文某事+ 爪子+ 德波诺沃 + 迪克里斯蒂娜 el-g-1 + 平顺+ 福蒂诺21 + FSHI01+ GF康+ github-actions[机器人] 我-秋-y 杰布罗克门德尔 杰雷巴克 朱利安德温+ jxb4892+ 肯德尔·史密斯 + 姆辛杜瓦 + 伊雷皮通 马克西米利安Akka多 + 迈克尔-GH 尼尔姆拉曼 帕尔捷夫 福尔+ 普拉秋沙兰 + 量子阿拉维亚 + 拉斐尔+ 真实领先 罗卡布雷拉 + 玫瑰金 世熙黄+ 萨洛蒙杜什 + 舒巴姆11941140 + 斯里尼瓦桑 + 斯蒂芬利德 索尼克 特雷沃卡斯克 + 图书书 强吉+ 用户阻止+ 韦尔内蒂亚+ 弗瑟尔帕+ 威利3838 + 泽特林夫+ 张小星+