Pandas-2-2-中文文档-四十八-
Pandas 2.2 中文文档(四十八)
What’s new in 1.0.5 (June 17, 2020)
这些是 pandas 1.0.5 中的更改。查看 发布说明 获取包括其他 pandas 版本的完整更改日志。
修复的回归问题
请注意,这将再次禁用从 S3 目录读取 Parquet 文件的功能 (GH 26388, GH 34632),这在 1.0.4 版本中添加,但现在目标是 pandas 1.1.0。
-
修复了在使用不同数据类型的值替换扩展数据类型中的值时,
replace()
引发AssertionError
的回归问题 (GH 34530) ## Bug 修复 -
修复了在使用 Python 3.8 从源代码构建时错误地获取 NumPy 的错误版本的问题 (GH 34666)
贡献者
一共有 8 人为这个版本提供了补丁。名字后面有 “+” 的人第一次为此版本提供了补丁。
-
Joris Van den Bossche
-
MeeseeksMachine
-
Natalie Jann +
-
Pandas Development Team
-
Simon Hawkins
-
Tom Augspurger
-
William Ayd
-
alimcmaster1
修复的回归问题
请注意,这将再次禁用从 S3 目录读取 Parquet 文件的功能 (GH 26388, GH 34632),这在 1.0.4 版本中添加,但现在目标是 pandas 1.1.0。
- 修复了在使用不同数据类型的值替换扩展数据类型中的值时,
replace()
引发AssertionError
的回归问题 (GH 34530)
Bug 修复
- 修复了在使用 Python 3.8 从源代码构建时错误地获取 NumPy 的错误版本的问题 (GH 34666)
贡献者
一共有 8 人为这个版本提供了补丁。名字后面有 “+” 的人第一次为此版本提供了补丁。
-
Joris Van den Bossche
-
MeeseeksMachine
-
Natalie Jann +
-
Pandas Development Team
-
Simon Hawkins
-
汤姆·奥古斯伯格
-
威廉·艾德
-
alimcmaster1
1.0.4 中的新特性(2020 年 5 月 28 日)
这些是 pandas 1.0.4 中的更改。请参阅发布说明以获取包括 pandas 的其他版本在内的完整更改日志。
修复的回归
-
修复了当
pandas.options.mode.use_inf_as_na
设置为True
时,Series.isna()
和DataFrame.isna()
对分类 dtype 抛出异常的回归(GH 33594)。 -
修复了
DataFrameGroupBy.first()
、SeriesGroupBy.first()
、DataFrameGroupBy.last()
和SeriesGroupBy.last()
中的回归,在对象 dtype 中不保留 None 时(GH 32800)。 -
修复了使用
numeric_only=True
和 ExtensionArrays 进行 DataFrame 减少时的回归(GH 33256)。 -
修复了
memory_usage(deep=True)
在对象 dtype 中的性能回归(GH 33012)。 -
修复了
Categorical.replace()
在新值和替换值相等时替换为NaN
的回归(GH 33288)。 -
修复了包含仅
NaN
值的有序Categorical
的回归,当取最小值或最大值时,会引发而不是返回NaN
(GH 33450)。 -
修复了
DataFrameGroupBy.agg()
使用字典输入时丢失ExtensionArray
dtypes 的回归(GH 32194)。 -
修复了在使用 xarray 的 CFTimeIndex 进行 “nearest” 方法索引时的能力,一个
Index
子类(pydata/xarray#3751, GH 32905)。 -
修复
DataFrame.describe()
中的回归引发TypeError: unhashable type: 'dict'
错误 (GH 32409) -
修复
DataFrame.replace()
中的回归,如果to_replace
中的项目不在值中,则将列转换为object
数据类型 (GH 32988) -
当按
PeriodIndex
级别分组时,Series.groupby()
中的回归会引发ValueError
(GH 34010) -
修复
DataFrameGroupBy.rolling.apply()
和SeriesGroupBy.rolling.apply()
中的回归忽略了 args 和 kwargs 参数 (GH 33433) -
修复在无序
Categorical
上使用np.min
或np.max
时错误消息的回归(GH 33115) -
修复当提供
datetime64[ns, tz]
值时DataFrame.loc()
和Series.loc()
中的回归会抛出错误 (GH 32395) ## Bug fixes -
当应用于可空布尔值时,
SeriesGroupBy.first()
、SeriesGroupBy.last()
、SeriesGroupBy.min()
和SeriesGroupBy.max()
中的错误返回浮点数 (GH 33071) -
在使用固定窗口时,
Rolling.min()
和Rolling.max()
中的错误:多次调用后内存使用量增长。 (GH 30726) -
当向私有 s3 存储桶写入无效凭据时,
to_parquet()
中的错误未引发PermissionError
。 (GH 27679) -
当写入无效的 s3 存储桶时,
to_csv()
中的错误已经静默失败。(GH 32486) -
当传递 s3 目录路径时,
read_parquet()
中的错误会引发FileNotFoundError
。 (GH 26388) -
在写入分区 parquet 文件到 s3 时,
to_parquet()
中的错误会抛出AttributeError
(GH 27596) -
DataFrameGroupBy.quantile()
和SeriesGroupBy.quantile()
中的错误导致当by
轴包含NaN
时,分位数会发生偏移(GH 33200、GH 33569)。
贡献者
总共有 18 人为这个版本贡献了补丁。名字后面带有“+”的人是第一次贡献补丁。
-
Daniel Saxton
-
JDkuba +
-
Joris Van den Bossche
-
Kaiqi Dong
-
Mabel Villalba
-
MeeseeksMachine
-
MomIsBestFriend
-
Pandas 开发团队
-
Simon Hawkins
-
Spencer Clark +
-
Tom Augspurger
-
Vikas Pandey +
-
alimcmaster1
-
h-vishal +
-
jbrockmendel
-
mproszewska +
-
neilkg +
-
rebecca-palmer +
修复的回归
-
修复了当
pandas.options.mode.use_inf_as_na
设置为True
时,Series.isna()
和DataFrame.isna()
在分类 dtype 上引发异常的回归(GH 33594)。 -
修复了在
DataFrameGroupBy.first()
、SeriesGroupBy.first()
、DataFrameGroupBy.last()
和SeriesGroupBy.last()
中,当 object dtype 中不保留 None 时的回归(GH 32800)。 -
修复了在使用
numeric_only=True
和 ExtensionArrays 时 DataFrame reductions 中的回归(GH 33256)。 -
修复了在 object dtype 中
memory_usage(deep=True)
的性能回归(GH 33012)。 -
修复了
Categorical.replace()
中的回归,每当新值和替换值相等时都会用NaN
替换的问题(GH 33288)。 -
修复了包含仅包含
NaN
值的有序Categorical
在取最小值或最大值时引发而不是返回NaN
的回归问题(GH 33450) -
修复了
DataFrameGroupBy.agg()
中字典输入丢失ExtensionArray
dtypes 的回归问题(GH 32194) -
修复了在 xarray 的 CFTimeIndex 中保留使用“nearest”方法进行索引的能力的问题,它是
Index
的子类(pydata/xarray#3751,GH 32905)。 -
修复了
DataFrame.describe()
引发TypeError: unhashable type: 'dict'
的回归问题(GH 32409) -
修复了
DataFrame.replace()
中的回归问题,如果to_replace
中的项目不在值中,则将列转换为object
dtype(GH 32988) -
修复了
Series.groupby()
在按PeriodIndex
级别分组时引发ValueError
的回归问题(GH 34010) -
修复了
DataFrameGroupBy.rolling.apply()
和SeriesGroupBy.rolling.apply()
忽略 args 和 kwargs 参数的回归问题(GH 33433) -
修复了在无序的
Categorical
上使用np.min
或np.max
时的错误消息回归问题(GH 33115) -
修复了当提供
datetime64[ns, tz]
值时,DataFrame.loc()
和Series.loc()
抛出错误的回归问题(GH 32395)
错误修复
-
在可空布尔值上应用时,
SeriesGroupBy.first()
、SeriesGroupBy.last()
、SeriesGroupBy.min()
和SeriesGroupBy.max()
返回浮点数的错误(GH 33071) -
在
Rolling.min()
和Rolling.max()
中的错误:使用固定窗口进行多次调用后内存使用量增加(GH 30726) -
在将数据写入私有 s3 存储桶时,
to_parquet()
存在一个 bug,不会引发PermissionError
,即使凭据无效也是如此。 (GH 27679) -
在写入无效的 s3 存储桶时,
to_csv()
存在一个潜在的 bug,会静默失败。(GH 32486) -
在传递 s3 目录路径时,
read_parquet()
存在一个 bug,会引发FileNotFoundError
。 (GH 26388) -
在将分区 parquet 文件写入 s3 时,
to_parquet()
存在一个 bug,会抛出AttributeError
。 (GH 27596) -
DataFrameGroupBy.quantile()
和SeriesGroupBy.quantile()
中存在一个 bug,当by
轴包含NaN
时,分位数会被移位。 (GH 33200, GH 33569)
贡献者
共有 18 人为此版本提供了补丁。 姓名后带“+”的人是首次贡献补丁的人。
-
Daniel Saxton
-
JDkuba +
-
Joris Van den Bossche
-
Kaiqi Dong
-
Mabel Villalba
-
MeeseeksMachine
-
妈妈是最好的朋友
-
Pandas 开发团队
-
Simon Hawkins
-
Spencer Clark +
-
Tom Augspurger
-
Vikas Pandey +
-
alimcmaster1
-
h-vishal +
-
jbrockmendel
-
mproszewska +
-
neilkg +
-
rebecca-palmer +
1.0.3 的新内容(2020 年 3 月 17 日)
这些是 pandas 1.0.3 的变化。查看发布说明获取包括其他版本的 pandas 在内的完整更改日志。
修复的回归
贡献者
总共有 5 人为此版本提供了补丁。名字旁边带有“+”的人第一次为此提供了补丁。
-
MeeseeksMachine
-
Pandas 开发团队
-
Tom Augspurger
-
William Ayd
-
jbrockmendel
修复的回归
Bug 修复
贡献者
总共有 5 人为此版本提供了补丁。名字旁边带有“+”的人第一次为此提供了补丁。
-
MeeseeksMachine
-
Pandas 开发团队
-
Tom Augspurger
-
William Ayd
-
jbrockmendel
1.0.2 版的新功能(2020 年 3 月 12 日)
这些是 pandas 1.0.2 中的变化。查看发行说明获取包括其他版本的完整更改日志。
修复的回归问题
分组
-
修复了当帧具有
MultiIndex
列和自定义函数时,DataFrameGroupBy.agg()
和SeriesGroupBy.agg()
中的回归问题(GH 31777) -
修复了
groupby(..).rolling(..).apply()
中raw
参数被忽略的回归问题(GH 31754) -
修复了使用时间偏移时
rolling(..).corr()
中的回归问题(GH 31789) -
修复了当存在
NaN
值时,groupby(..).nunique()
中的回归问题,该问题会修改原始值(GH 31950) -
修复了从内部操作引发
ValueError
的DataFrame.groupby
中的回归问题(GH 31802) -
修复了在空输入上调用用户提供的函数时,
DataFrameGroupBy.agg()
和SeriesGroupBy.agg()
额外调用一次的回归问题(GH 31760)
I/O
-
修复了在某些类文件对象中未识别
encoding
选项的read_csv()
中的回归问题(GH 31819) -
修复了在传递了
columns
关键字参数时,DataFrame.to_excel()
中的回归问题(GH 31677) -
修复了在传递给函数的流被析构函数关闭的
ExcelFile
中的回归。 (GH 31467) -
修复了在读取具有
MultiIndex
列的 py27 pickle 时,read_pickle()
引发UnicodeDecodeError
的回归 (GH 31988)
重新索引/对齐
-
修复了当
other
是DataFrame
且method
不是None
时Series.align()
中的回归 (GH 31785) -
修复了在使用(带时区信息的)索引和
method=nearest
重新索引时DataFrame.reindex()
和Series.reindex()
中的回归 (GH 26683) -
修复了在
DataFrame
子类上调用DataFrame.reindex_like()
时引发AssertionError
的回归 (GH 31925) -
修复了在列不匹配的情况下
DataFrame
算术运算中的回归(GH 31623)
其他
-
修复了在
DatetimeIndex
或TimedeltaIndex
上连接时保留freq
的简单情况中的回归(GH 32166) -
修复了在使用
datetime64
数据类型时,通过整数fill_value
传递给Series.shift()
时的回归 (GH 32591) -
修复了对象类型为布尔值和缺失值的
Index
在 repr 中的回归(GH 32146)
使用可空布尔数组进行索引
以前使用包含NA
的可空布尔数组进行索引会引发ValueError
,但现在允许使用NA
,并将其视为False
。 (GH 31503)
In [1]: s = pd.Series([1, 2, 3, 4])
In [2]: mask = pd.array([True, True, False, None], dtype="boolean")
In [3]: s
Out[3]:
0 1
1 2
2 3
3 4
dtype: int64
In [4]: mask
Out[4]:
<BooleanArray>
[True, True, False, <NA>]
Length: 4, dtype: boolean
pandas 1.0.0-1.0.1
>>> s[mask]
Traceback (most recent call last):
...
ValueError: cannot mask with array containing NA / NaN values
pandas 1.0.2
In [5]: s[mask]
Out[5]:
0 1
1 2
dtype: int64
修复的错误
Datetimelike
-
修复了
Series.astype()
中的错误,对于 tz-naive 和 tz-aware 的datetime64
dtype 没有复制(GH 32490) -
修复了当传递
pd.NA
时to_datetime()
会引发的错误(GH 32213) -
对两个导致超出界限的
Timestamp
相减时改进了错误消息(GH 31774)
分类
-
修复了当传递可空整数代码时
Categorical.from_codes()
错误地引发ValueError
的错误(GH 31779) -
修复了当给定包含
pd.NA
的 numpy 数组时Categorical()
构造函数会引发TypeError
的错误(GH 31927) -
修复了在调用时会忽略或崩溃的
Categorical
中的错误,当使用列表样的to_replace
调用Series.replace()
时(GH 31720)
输入/输出
-
现在在
DataFrame.to_json()
中正确地输出空值而不是空对象的pd.NA
(GH 31615) -
当 meta 路径中的值不可迭代时修复了
pandas.json_normalize()
中的错误(GH 31507) -
修复了
pandas.NA
的 pickling。以前会返回一个新对象,这会破坏依赖于NA
是单例的计算(GH 31847) -
修复了带有可空无符号整数 dtype 的 parquet 往返中的错误(GH 31896)
实验性的 dtype
-
修复了对已使用
"string"
dtype 的列的DataFrame.convert_dtypes()
中的错误(GH 31731)。 -
修复了
DataFrame.convert_dtypes()
中包含整数和字符串混合的系列的错误(GH 32117) -
修复了
DataFrame.convert_dtypes()
中BooleanDtype
列被转换为Int64
的错误(GH 32287) -
修复了使用具有字符串类型的切片索引器设置值时的错误(GH 31772)
-
修复了
DataFrameGroupBy.first()
,SeriesGroupBy.first()
,DataFrameGroupBy.last()
和SeriesGroupBy.last()
在组中包含pd.NA
的对象类型列时会引发TypeError
的错误(GH 32123) -
修复了
DataFrameGroupBy.mean()
,DataFrameGroupBy.median()
,DataFrameGroupBy.var()
和DataFrameGroupBy.std()
在Int64
类型列上引发TypeError
的错误(GH 32219)
Strings
- 使用
pd.NA
与Series.str.repeat()
一起,现在正确输出空值,而不是对向量输入引发错误(GH 31632)
Rolling
- 修复了在时间索引递减时使用变量窗口(由时间持续时间定义)的滚动操作的错误(GH 32385) ## 贡献者
本次发布共有 25 人贡献了补丁。名字后面带有“+”符号的人第一次贡献了补丁。
-
Anna Daglis +
-
Daniel Saxton
-
Irv Lustig
-
Jan Škoda
-
Joris Van den Bossche
-
Justin Zheng
-
Kaiqi Dong
-
Kendall Masse
-
Marco Gorelli
-
Matthew Roeschke
-
MeeseeksMachine
-
MomIsBestFriend
-
Pandas 开发团队
-
Pedro Reys +
-
Prakhar Pandey
-
Robert de Vries +
-
Rushabh Vasani
-
Simon Hawkins
-
Stijn Van Hoey
-
Terji Petersen
-
Tom Augspurger
-
William Ayd
-
alimcmaster1
-
gfyoung
-
jbrockmendel ## 修复回归问题
Groupby
-
修复了在具有
MultiIndex
列和自定义函数的框架上失败的DataFrameGroupBy.agg()
和SeriesGroupBy.agg()
的回归问题 (GH 31777) -
修复了
groupby(..).rolling(..).apply()
(RollingGroupby
)中raw
参数被忽略的回归问题 (GH 31754) -
修复了使用时间偏移时
rolling(..).corr()
的回归问题 (GH 31789) -
修复了
groupby(..).nunique()
在存在NaN
值时修改原始值的回归问题 (GH 31950) -
修复了
DataFrame.groupby
在内部操作中引发ValueError
的回归问题 (GH 31802) -
修复了
DataFrameGroupBy.agg()
和SeriesGroupBy.agg()
在空输入上额外调用用户提供的函数的回归问题 (GH 31760)
I/O
-
修复了
read_csv()
中某些类似文件对象不识别encoding
选项的回归问题 (GH 31819) -
修复了
DataFrame.to_excel()
在传递columns
关键字参数时的回归问题 (GH 31677) -
修复了
ExcelFile
中传递给函数的流被析构函数关闭的回归问题 (GH 31467) -
修复了使用
MultiIndex
列的 py27 pickle 时read_pickle()
报错UnicodeDecodeError
的回归问题 (GH 31988).
重新索引/对齐
-
修复了当
other
是DataFrame
且method
不是None
时Series.align()
的回归问题 (GH 31785) -
在使用(时区感知的)索引和
method=nearest
进行重新索引时,DataFrame.reindex()
和Series.reindex()
中的回归问题 (GH 26683) -
在一个
DataFrame
子类上使用DataFrame.reindex_like()
引发了AssertionError
的回归问题 (GH 31925) -
修复了
DataFrame
算术运算中列不匹配的回归问题 (GH 31623)
其他
-
修复了在简单情况下在
DatetimeIndex
或TimedeltaIndex
上连接时保留freq
的回归问题 (GH 32166) -
修复了使用
datetime64
类型时Series.shift()
的回归问题,当传递整数fill_value
时 (GH 32591) -
修复了具有布尔值和缺失值的对象类型
Index
的 repr 中的回归问题 (GH 32146)
使用可空布尔数组进行索引
以前使用包含 NA
的可空布尔数组进行索引会引发 ValueError
,但现在允许这样做,将 NA
视为 False
。 (GH 31503)
In [1]: s = pd.Series([1, 2, 3, 4])
In [2]: mask = pd.array([True, True, False, None], dtype="boolean")
In [3]: s
Out[3]:
0 1
1 2
2 3
3 4
dtype: int64
In [4]: mask
Out[4]:
<BooleanArray>
[True, True, False, <NA>]
Length: 4, dtype: boolean
pandas 1.0.0-1.0.1
>>> s[mask]
Traceback (most recent call last):
...
ValueError: cannot mask with array containing NA / NaN values
pandas 1.0.2
In [5]: s[mask]
Out[5]:
0 1
1 2
dtype: int64
Bug fixes
日期时间类
-
修复了
Series.astype()
中的一个 bug,对于 tz-naive 和 tz-awaredatetime64
dtype 没有复制 (GH 32490) -
修复了
to_datetime()
当传递pd.NA
时会引发错误的 bug (GH 32213) -
当减去两个结果为越界
Timedelta
的Timestamp
时,改进了错误消息 (GH 31774)
分类
-
修复了
Categorical.from_codes()
当传递可空整数代码时不正确地引发ValueError
的 bug。 (GH 31779) -
修复了
Categorical()
构造函数的一个 bug,当给定一个包含pd.NA
的 numpy 数组时会引发TypeError
。(GH 31927) -
在
Categorical
中的一个 bug,当使用列表式的to_replace
调用Series.replace()
时会忽略或崩溃 (GH 31720)
I/O
-
使用
pd.NA
与DataFrame.to_json()
现在正确地输出一个 null 值而不是一个空对象 (GH 31615) -
在
pandas.json_normalize()
中的一个 Bug,当元路径中的值不可迭代时 (GH 31507) -
修复了对
pandas.NA
的 pickling。以前会返回一个新对象,这会破坏依赖于NA
为单例的计算 (GH 31847) -
修复了与可空无符号整数 dtypes 的 parquet 往返中的一个 bug (GH 31896).
实验性的 dtypes
-
修复了
DataFrame.convert_dtypes()
中的一个 Bug,用于已经使用"string"
dtype 的列 (GH 31731). -
修复了对混合整数和字符串系列的
DataFrame.convert_dtypes()
中的错误(GH 32117) -
修复了
DataFrame.convert_dtypes()
中BooleanDtype
列被转换为Int64
的错误(GH 32287) -
修复了使用字符串类型的切片索引器设置值时的错误(GH 31772)
-
修复了当组中包含
pd.NA
在对象 dtype 列中时,DataFrameGroupBy.first()
、SeriesGroupBy.first()
、DataFrameGroupBy.last()
和SeriesGroupBy.last()
会引发TypeError
的错误(GH 32123) -
修复了当
DataFrameGroupBy.mean()
、DataFrameGroupBy.median()
、DataFrameGroupBy.var()
和DataFrameGroupBy.std()
在Int64
dtype 列上引发TypeError
的错误(GH 32219)
字符串
- 使用
pd.NA
与Series.str.repeat()
现在能正确输出空值,而不是对向量输入引发错误(GH 31632)
滚动
- 修复了在减少的时间索引上对变量窗口(由时间持续时间定义)的滚动操作的错误(GH 32385)
贡献者
总共有 25 人为此版本提供了补丁。名字旁边带有“+”符号的人是第一次贡献补丁的人。
-
Anna Daglis +
-
Daniel Saxton
-
Irv Lustig
-
Jan Škoda
-
Joris Van den Bossche
-
Justin Zheng
-
Kaiqi Dong
-
Kendall Masse
-
Marco Gorelli
-
Matthew Roeschke
-
MeeseeksMachine
-
MomIsBestFriend
-
Pandas 开发团队
-
Pedro Reys +
-
Prakhar Pandey
-
Robert de Vries +
-
Rushabh Vasani
-
Simon Hawkins
-
Stijn Van Hoey
-
Terji Petersen
-
Tom Augspurger
-
William Ayd
-
alimcmaster1
-
gfyoung
-
jbrockmendel
1.0.1 中的新内容(2020 年 2 月 5 日)。
这些是 pandas 1.0.1 中的变化。查看发行说明以获取包括 pandas 的其他版本在内的完整更改日志。
回归修复
-
修复了使用标签索引而不是位置索引设置切片值的
DataFrame
中的回归(例如df[-4:] = 1
)(GH 31469)。 -
修复了在使用包含
datetime.date
的切片索引DatetimeIndex
的Series
或DataFrame
时的回归(GH 31501)。 -
修复了当使用
MultiIndex
和非单调索引器时,DataFrame.__setitem__
抛出AttributeError
的回归(GH 31449)。 -
修复了在将具有 >10000 个元素的数值
Series
与类似时间间隔的标量相乘时的Series
乘法的回归(GH 31457)。 -
修复了在一些对象 dtype 列上进行
min
等缩减时,.groupby().agg()
抛出AssertionError
的回归(GH 31522)。 -
修复了在使用 Cython 化的缩减函数(例如
first
)进行分类 dtype 聚合时,.groupby()
聚合的回归(GH 31450)。 -
修复了当使用返回非 pandas 非标量对象(例如列表或 numpy 数组)的函数调用
DataFrameGroupBy.apply()
和SeriesGroupBy.apply()
时的回归(GH 31441)。 -
修复了在
DataFrame.groupby()
中取某一列的最小值或最大值时,如果该列具有周期 dtype,则会引发TypeError
的回归(GH 31471)。 -
修复了当使用空的 DataFrame 对 MultiIndex 的层进行分组时,在
DataFrame.groupby()
中的回归(GH 31670)。 -
修复了在对象 dtype 和非缩减函数的情况下使用
DataFrame.apply()
中的回归问题(GH 31505) -
修复了
to_datetime()
中的回归问题,在解析非纳秒分辨率日期时间时(GH 31491) -
修复了
to_csv()
中的回归问题,指定na_rep
可能会截断写入的值(GH 31447) -
修复了使用
numpy.str_
类别进行Categorical
构造的回归问题(GH 31499) -
修复了当选择包含单个
datetime64
或timedelta64
列的行时DataFrame.loc()
和DataFrame.iloc()
中的回归问题(GH 31649) -
修复了设置
pd.options.display.max_colwidth
时出现的回归问题,不接受负整数。此外,已弃用此行为,推荐使用None
(GH 31532) -
修复了 objTOJSON.c 中修复返回类型警告的回归问题(GH 31463)
-
修复了当传递可空整数时
qcut()
中的回归问题(GH 31389) -
修复了使用可空整数 dtype 的
Series
进行赋值时的回归问题(GH 31446) -
修复了使用标签列表为索引的
DataFrame
或Series
进行索引时的性能回归问题(GH 31648) -
修复了在文件对象
RawIOBase
中使用的read_csv()
无法识别encoding
选项的回归问题(GH 31575) ## 弃用 -
对于
pd.options.display.max_colwidth
的负整数支持已弃用,推荐使用None
(GH 31532) ## Bug 修复
日期时间
- 修复了
to_datetime()
在cache=True
且存在超出范围值时引发错误的 bug (GH 31491)
数值
- 修复了在
DataFrame.__invert__
(~
运算符)中丢失 dtype 的 bug,混合 dtype 时使用标签而不是位置进行索引,以及对基于扩展数组的Series
和DataFrame
(GH 23087) (GH 31183)
绘图
- 绘制 tz-aware 时间序列不再产生 UserWarning (GH 31205)
间隔
- 修复了使用
interval
dtype 进行Series.shift()
时,将整数或日期时间的间隔数组进行移位时引发TypeError
��bug (GH 34195) ## 贡献者
总共有 15 人为此版本贡献了补丁。名字后带“+”的人第一次贡献了补丁。
-
Daniel Saxton
-
Guillaume Lemaitre
-
Jeff Reback
-
Joris Van den Bossche
-
Kaiqi Dong
-
Marco Gorelli
-
MeeseeksMachine
-
Pandas 开发团队
-
Sebastián Vanrell +
-
Tom Augspurger
-
William Ayd
-
alimcmaster1
-
jbrockmendel
-
paihu +
-
proost ## 修复的回归问题
-
修复了在使用切片设置值时
DataFrame
出现的回归问题(例如df[-4:] = 1
),通过标签而不是位置进行索引 (GH 31469) -
修复了使用包含
datetime.date
的切片索引DatetimeIndex
索引的Series
或DataFrame
时出现的回归问题 (GH 31501) -
修复了在使用
MultiIndex
和非单调索引器时,DataFrame.__setitem__
引发AttributeError
的回归问题 (GH 31449) -
修复了当将具有>10000 个元素的数值
Series
与类似时间间隔的标量相乘时,Series
乘法的回归问题 (GH 31457) -
修复了在对对象 dtype 列进行一些缩减(如
min
)时,.groupby().agg()
引发AssertionError
的回归问题 (GH 31522) -
修复了使用 Cython 化的缩减函数(例如
first
)对分类 dtype 进行.groupby()
聚合时的回归问题(GH 31450) -
修复了
DataFrameGroupBy.apply()
和SeriesGroupBy.apply()
中的回归问题,如果使用返回非 pandas 非标量对象的函数(例如列表或 numpy 数组)调用时(GH 31441) -
修复了
DataFrame.groupby()
中的回归问题,当对具有周期 dtype 的列取最小值或最大值时会引发TypeError
。 (GH 31471) -
修复了
DataFrame.groupby()
中的回归问题,当空 DataFrame 按 MultiIndex 的级别分组时(GH 31670)。 -
修复了
DataFrame.apply()
中的回归问题,当对象 dtype 和非减少函数一起使用时(GH 31505) -
修复了
to_datetime()
中的回归问题,解析非纳秒分辨率日期时间时(GH 31491) -
修复了
to_csv()
中的回归问题,其中指定na_rep
可能会截断写入的值(GH 31447) -
修复了
Categorical
构造中的回归问题,使用numpy.str_
类别(GH 31499) -
修复了
DataFrame.loc()
和DataFrame.iloc()
中的回归问题,当选择包含单个datetime64
或timedelta64
列的行时(GH 31649) -
修复了设置
pd.options.display.max_colwidth
不接受负整数的回归问题。此外,已弃用此行为,建议使用None
(GH 31532) -
修复了 objTOJSON.c 中的回归问题,修复了返回类型警告(GH 31463)
-
修复了在传递可空整数时
qcut()
的回归错误。 (GH 31389) -
修复了在使用可空整数 dtype 分配给
Series
时的回归错误 (GH 31446) -
在使用标签列表为索引的
DataFrame
或Series
进行索引时,性能回归问题已修复 (GH 31648) -
修复了
read_csv()
中在文件对象RawIOBase
中使用encoding
选项未识别的性能回归问题 (GH 31575)
弃用
- 对于
pd.options.display.max_colwidth
的负整数支持已弃用,建议使用None
(GH 31532)
Bug 修复
日期时间样式
- 修复了
to_datetime()
在cache=True
且存在越界值时引发错误的 bug (GH 31491)
数字
- 在混合 dtype 的情况下,
DataFrame.__invert__
(~
操作符) 以及对于由扩展数组支持的Series
和DataFrame
中丢失 dtypes 的 bug (GH 31183) 已修复
绘图
- 绘图时区感知时间序列不再发出 UserWarning (GH 31205)
区间
Series.shift()
中的 bug,使用interval
dtype 并将整数或日期时间的间隔数组进行移位时引发TypeError
(GH 34195)
贡献者
总共有 15 人对此版本进行了补丁贡献。 姓名后带“+”的人首次为补丁做出了贡献。
-
Daniel Saxton
-
Guillaume Lemaitre
-
Jeff Reback
-
Joris Van den Bossche
-
Kaiqi Dong
-
Marco Gorelli
-
MeeseeksMachine
-
Pandas 开发团队
-
Sebastián Vanrell +
-
Tom Augspurger
-
William Ayd
-
alimcmaster1
-
jbrockmendel
-
paihu +
-
proost
1.0.0 中的新功能(2020 年 1 月 29 日)
这些是 pandas 1.0.0 中的更改。请参阅发布说明获取包括 pandas 其他版本的完整更新日志。
注意
pandas 1.0 版本删除了在以前版本中已弃用的许多功能(有关概述,请参阅下文)。建议首先升级到 pandas 0.25,并确保您的代码在没有警告的情况下正常工作,然后再升级到 pandas 1.0。
新的弃用策略
从 pandas 1.0.0 开始,pandas 将采用SemVer的一个变体进行版本发布。简而言之,
-
弃用将在次要发布版本中引入(例如 1.1.0,1.2.0,2.1.0,…)
-
弃用将在主要发布版本中实施(例如 1.0.0,2.0.0,3.0.0,…)
-
仅在主要发布版本中进行 API 破坏性更改(除了实验性功能)
更多信息,请参阅版本策略。
增强功能
在rolling.apply
和expanding.apply
中使用 Numba
我们已经在apply()
和apply()
中添加了engine
关键字,允许用户使用Numba而不是 Cython 执行程序。如果apply
函数能够操作 numpy 数组,并且数据集较大(100 万行或更多),则使用 Numba 引擎可以获得显著的性能提升。更多详情,请参阅滚动应用文档 (GH 28987, GH 30936) ### 为滚动操作定义自定义窗口
我们已经添加了pandas.api.indexers.BaseIndexer()
类,允许用户定义rolling
操作期间如何创建窗口边界。用户可以在pandas.api.indexers.BaseIndexer()
子类上定义自己的get_window_bounds
方法,该方法将生成用于滚动聚合期间每个窗口的起始和结束索引。有关更多详情和示例用法,请参阅自定义窗口滚动文档 ### 转换为 markdown
我们添加了to_markdown()
用于创建 markdown 表格(GH 11052)
In [1]: df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b'])
In [2]: print(df.to_markdown())
| | A | B |
|:---|----:|----:|
| a | 1 | 1 |
| a | 2 | 2 |
| b | 3 | 3 |
实验性新功能
实验性NA
标量表示缺失值
引入了新的pd.NA
值(单例)来表示标量缺失值。到目前为止,pandas 使用了几个值来表示缺失数据:np.nan
用于浮点数据,np.nan
或 None
用于对象 dtype 数据,pd.NaT
用于类似 datetime 的数据。pd.NA
的目标是提供一个可以在各种数据类型之间一致使用的“缺失”指示符。pd.NA
目前由可空整数和布尔数据类型以及新的字符串数据类型使用(GH 28095)。
警告
实验性:pd.NA
的行为仍可能会在没有警告的情况下发生变化。
例如,使用可空整数 dtype 创建一个 Series:
In [3]: s = pd.Series([1, 2, None], dtype="Int64")
In [4]: s
Out[4]:
0 1
1 2
2 <NA>
dtype: Int64
In [5]: s[2]
Out[5]: <NA>
与np.nan
相比,pd.NA
在某些操作中的行为是不同的。除了算术操作外,pd.NA
还在比较操作中传播为“缺失”或“未知”:
In [6]: np.nan > 1
Out[6]: False
In [7]: pd.NA > 1
Out[7]: <NA>
对于逻辑操作,pd.NA
遵循三值逻辑(或Kleene 逻辑)的规则。例如:
In [8]: pd.NA | True
Out[8]: True
查看有关缺失数据的用户指南中的 NA 部分。### 专用字符串数据类型
我们添加了StringDtype
,一个专用于字符串数据的扩展类型。以前,字符串通常存储在对象 dtype 的 NumPy 数组中。 (GH 29975)
警告
StringDtype
目前被视为实验性质。实现和 API 的部分可能会在没有警告的情况下发生更改。
'string'
扩展类型解决了对象 dtype NumPy 数组的几个问题:
-
您可能会意外地将字符串和非字符串的混合存储在对象 dtype 数组中。StringArray 只能存储字符串。
-
object
dtype 会破坏 dtype 特定的操作,例如DataFrame.select_dtypes()
。没有明确的方法可以只选择文本而排除非文本,但仍然是对象 dtype 的列。 -
在阅读代码时,对象 dtype 数组的内容比
string
不够清晰。
In [9]: pd.Series(['abc', None, 'def'], dtype=pd.StringDtype())
Out[9]:
0 abc
1 <NA>
2 def
dtype: string
你也可以使用别名"string"
。
In [10]: s = pd.Series(['abc', None, 'def'], dtype="string")
In [11]: s
Out[11]:
0 abc
1 <NA>
2 def
dtype: string
常规的字符串访问方法有效。在适当的情况下,DataFrame 的 Series 或列的返回类型也将具有字符串 dtype。
In [12]: s.str.upper()
Out[12]:
0 ABC
1 <NA>
2 DEF
dtype: string
In [13]: s.str.split('b', expand=True).dtypes
Out[13]:
0 string[python]
1 string[python]
dtype: object
返回整数的字符串访问方法将返回一个具有Int64Dtype
的值。
In [14]: s.str.count("a")
Out[14]:
0 1
1 <NA>
2 0
dtype: Int64
我们建议在处理字符串时明确使用string
数据类型。更多信息请参见 Text data types。### 支持缺失值的布尔数据类型
我们添加了BooleanDtype
/ BooleanArray
,这是专门用于布尔数据的扩展类型,可以容纳缺失值。默认的bool
数据类型基于 bool-dtype NumPy 数组,该列只能容纳True
或False
,而不能容纳缺失值。这个新的BooleanArray
可以通过在单独的掩码中跟踪来存储缺失值。(GH 29555, GH 30095, GH 31131)
In [15]: pd.Series([True, False, None], dtype=pd.BooleanDtype())
Out[15]:
0 True
1 False
2 <NA>
dtype: boolean
你也可以使用别名"boolean"
。
In [16]: s = pd.Series([True, False, None], dtype="boolean")
In [17]: s
Out[17]:
0 True
1 False
2 <NA>
dtype: boolean
``` ### 方法`convert_dtypes`以便更轻松地使用支持的扩展数据类型
为了鼓励使用支持`pd.NA`的扩展数据类型`StringDtype`、`BooleanDtype`、`Int64Dtype`、`Int32Dtype`等,引入了`DataFrame.convert_dtypes()`和`Series.convert_dtypes()`方法。([GH 29752](https://github.com/pandas-dev/pandas/issues/29752)) ([GH 30929](https://github.com/pandas-dev/pandas/issues/30929))
示例:
```py
In [18]: df = pd.DataFrame({'x': ['abc', None, 'def'],
....: 'y': [1, 2, np.nan],
....: 'z': [True, False, True]})
....:
In [19]: df
Out[19]:
x y z
0 abc 1.0 True
1 None 2.0 False
2 def NaN True
In [20]: df.dtypes
Out[20]:
x object
y float64
z bool
dtype: object
In [21]: converted = df.convert_dtypes()
In [22]: converted
Out[22]:
x y z
0 abc 1 True
1 <NA> 2 False
2 def <NA> True
In [23]: converted.dtypes
Out[23]:
x string[python]
y Int64
z boolean
dtype: object
在使用read_csv()
和read_excel()
等读取器读取数据后,这一点尤为有用。请参见此处了解详情。## 其他增强功能
-
DataFrame.to_string()
添加了max_colwidth
参数,用于控制何时截断宽列(GH 9784) -
向
Series.to_numpy()
、Index.to_numpy()
和DataFrame.to_numpy()
添加了na_value
参数,用于控制用于缺失数据的值(GH 30322) -
MultiIndex.from_product()
如果未明确提供,将从输入中推断级别名称。(GH 27292) -
DataFrame.to_latex()
现在接受caption
和label
参数。(GH 25436) -
具有可空整数、新字符串 dtype 和周期数据类型的数据帧现在可以转换为
pyarrow
(>=0.15.0),这意味着在使用pyarrow
引擎时支持写入 Parquet 文件格式。(GH 28368)。完整的 Parquet 往返(写入和读取回来使用to_parquet()
/read_parquet()
) -
to_parquet()
现在适当处理 pyarrow 引擎中用户定义模式的schema
参数。(GH 30270) -
DataFrame.to_json()
现在接受一个indent
整数参数,以便美化 JSON 输出。(GH 12004) -
read_stata()
可以读取 Stata 119 dta 文件。(GH 28250) -
实现了
Window.var()
和Window.std()
函数。(GH 26597) -
为非 ASCII 文本增加了
encoding
参数到DataFrame.to_string()
。(GH 28766) -
在
DataFrame.to_html()
中增加了encoding
参数以处理非 ASCII 文本。(GH 28663) -
Styler.background_gradient()
现在接受vmin
和vmax
参数。(GH 12145) -
read_excel()
现在可以通过传递engine='pyxlsb'
来读取二进制 Excel(.xlsb
)文件。有关更多详细信息和示例用法,请参阅二进制 Excel 文件文档。关闭了GH 8540。 -
DataFrame.to_parquet()
中的partition_cols
参数现在接受字符串了(GH 27117) -
pandas.read_json()
现在解析NaN
、Infinity
和-Infinity
(GH 12213) -
DataFrame 构造函数保留了
ExtensionArray
dtype 与ExtensionArray
(GH 11363) -
DataFrame.sort_values()
和Series.sort_values()
现在增加了ignore_index
关键字,可以在排序后重置索引(GH 30114) -
DataFrame.sort_index()
和Series.sort_index()
现在增加了ignore_index
关键字,可以重置索引(GH 30114) -
DataFrame.drop_duplicates()
现在增加了ignore_index
关键字,可以重置索引(GH 30114) -
添加了新的写入器以导出版本为 118 和 119 的 Stata dta 文件,
StataWriterUTF8
。这些文件格式支持导出包含 Unicode 字符的字符串。格式 119 支持包含超过 32,767 个变量的数据集(GH 23573,GH 30959) -
Series.map()
现在接受collections.abc.Mapping
的子类作为映射器(GH 29733) -
为存储关于数据集的全局元数据添加了一个实验性
attrs
(GH 29062) -
Timestamp.fromisocalendar()
现在与 python 3.8 及以上版本兼容 (GH 28115) -
DataFrame.to_pickle()
和read_pickle()
现在接受 URL (GH 30163) ## 反向不兼容的 API 更改
避免使用来自 MultiIndex.levels
的名称
作为对 MultiIndex
的较大重构的一部分,级别名称现在与级别分开存储 (GH 27242)。我们建议使用 MultiIndex.names
访问名称,并使用 Index.set_names()
更新名称。
为了向后兼容,您仍然可以通过级别访问名称。
In [24]: mi = pd.MultiIndex.from_product([[1, 2], ['a', 'b']], names=['x', 'y'])
In [25]: mi.levels[0].name
Out[25]: 'x'
然而,不再可能通过级别更新MultiIndex
的名称。
In [26]: mi.levels[0].name = "new name"
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
Cell In[26], line 1
----> 1 mi.levels[0].name = "new name"
File ~/work/pandas/pandas/pandas/core/indexes/base.py:1690, in Index.name(self, value)
1686 @name.setter
1687 def name(self, value: Hashable) -> None:
1688 if self._no_setting_name:
1689 # Used in MultiIndex.levels to avoid silently ignoring name updates.
-> 1690 raise RuntimeError(
1691 "Cannot set name on a level of a MultiIndex. Use "
1692 "'MultiIndex.set_names' instead."
1693 )
1694 maybe_extract_name(value, None, type(self))
1695 self._name = value
RuntimeError: Cannot set name on a level of a MultiIndex. Use 'MultiIndex.set_names' instead.
In [27]: mi.names
Out[27]: FrozenList(['x', 'y'])
要更新,请使用MultiIndex.set_names
,它返回一个新的MultiIndex
。
In [28]: mi2 = mi.set_names("new name", level=0)
In [29]: mi2.names
Out[29]: FrozenList(['new name', 'y'])
IntervalArray
的新 repr
pandas.arrays.IntervalArray
采用与其他数组类相一致的新__repr__
(GH 25022)
pandas 0.25.x
In [1]: pd.arrays.IntervalArray.from_tuples([(0, 1), (2, 3)])
Out[2]:
IntervalArray([(0, 1], (2, 3]],
closed='right',
dtype='interval[int64]')
pandas 1.0.0
In [30]: pd.arrays.IntervalArray.from_tuples([(0, 1), (2, 3)])
Out[30]:
<IntervalArray>
[(0, 1], (2, 3]]
Length: 2, dtype: interval[int64, right]
DataFrame.rename
现在只接受一个位置参数
DataFrame.rename()
以前接受位置参数,这会导致歧义或未定义行为。从 pandas 1.0 开始,只允许通过位置传递第一个参数,该参数将标签映射到它们在默认轴上的新名称(GH 29136)。
pandas 0.25.x
In [1]: df = pd.DataFrame([[1]])
In [2]: df.rename({0: 1}, {0: 2})
Out[2]:
FutureWarning: ...Use named arguments to resolve ambiguity...
2
1 1
pandas 1.0.0
In [3]: df.rename({0: 1}, {0: 2})
Traceback (most recent call last):
...
TypeError: rename() takes from 1 to 2 positional arguments but 3 were given
请注意,当提供冲突或潜在歧义的参数时,现在会引发错误。
pandas 0.25.x
In [4]: df.rename({0: 1}, index={0: 2})
Out[4]:
0
1 1
In [5]: df.rename(mapper={0: 1}, index={0: 2})
Out[5]:
0
2 1
pandas 1.0.0
In [6]: df.rename({0: 1}, index={0: 2})
Traceback (most recent call last):
...
TypeError: Cannot specify both 'mapper' and any of 'index' or 'columns'
In [7]: df.rename(mapper={0: 1}, index={0: 2})
Traceback (most recent call last):
...
TypeError: Cannot specify both 'mapper' and any of 'index' or 'columns'
您仍然可以通过提供axis
关键字参数来更改应用第一个位置参数的轴。
In [31]: df.rename({0: 1})
Out[31]:
0
1 1
In [32]: df.rename({0: 1}, axis=1)
Out[32]:
1
0 1
如果您想要更新索引和列标签,请务必使用相应的关键字。
In [33]: df.rename(index={0: 1}, columns={0: 2})
Out[33]:
2
1 1
为 DataFrame
扩展了详细信息输出
DataFrame.info()
现在为列汇总显示行号(GH 17304)
pandas 0.25.x
In [1]: df = pd.DataFrame({"int_col": [1, 2, 3],
... "text_col": ["a", "b", "c"],
... "float_col": [0.0, 0.1, 0.2]})
In [2]: df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
int_col 3 non-null int64
text_col 3 non-null object
float_col 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 152.0+ bytes
pandas 1.0.0
In [34]: df = pd.DataFrame({"int_col": [1, 2, 3],
....: "text_col": ["a", "b", "c"],
....: "float_col": [0.0, 0.1, 0.2]})
....:
In [35]: df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 int_col 3 non-null int64
1 text_col 3 non-null object
2 float_col 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes
pandas.array()
推断更改
pandas.array()
现在在几种情况下推断出 pandas 的新扩展类型(GH 29791):
-
字符串数据(包括缺失值)现在返回
arrays.StringArray
。 -
整数数据(包括缺失值)现在返回
arrays.IntegerArray
。 -
布尔数据(包括缺失值)现在返回新的
arrays.BooleanArray
pandas 0.25.x
In [1]: pd.array(["a", None])
Out[1]:
<PandasArray>
['a', None]
Length: 2, dtype: object
In [2]: pd.array([1, None])
Out[2]:
<PandasArray>
[1, None]
Length: 2, dtype: object
pandas 1.0.0
In [36]: pd.array(["a", None])
Out[36]:
<StringArray>
['a', <NA>]
Length: 2, dtype: string
In [37]: pd.array([1, None])
Out[37]:
<IntegerArray>
[1, <NA>]
Length: 2, dtype: Int64
作为提醒,您可以指定 dtype
来禁用所有推断。
arrays.IntegerArray
现在使用 pandas.NA
arrays.IntegerArray
现在使用 pandas.NA
而不是 numpy.nan
作为其缺失值标记(GH 29964)。
pandas 0.25.x
In [1]: a = pd.array([1, 2, None], dtype="Int64")
In [2]: a
Out[2]:
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64
In [3]: a[2]
Out[3]:
nan
pandas 1.0.0
In [38]: a = pd.array([1, 2, None], dtype="Int64")
In [39]: a
Out[39]:
<IntegerArray>
[1, 2, <NA>]
Length: 3, dtype: Int64
In [40]: a[2]
Out[40]: <NA>
这有一些破坏 API 的后果。
转换为 NumPy ndarray
当转换为 NumPy 数组时,缺失值将为 pd.NA
,无法转换为浮点数。 因此,现在调用 np.asarray(integer_array, dtype="float")
将引发错误。
pandas 0.25.x
In [1]: np.asarray(a, dtype="float")
Out[1]:
array([ 1., 2., nan])
pandas 1.0.0
In [41]: np.asarray(a, dtype="float")
Out[41]: array([ 1., 2., nan])
使用具有显式 na_value
的 arrays.IntegerArray.to_numpy()
。
In [42]: a.to_numpy(dtype="float", na_value=np.nan)
Out[42]: array([ 1., 2., nan])
缩减可以返回 pd.NA
当执行像 skipna=False
这样的缩减操作时,存在缺失值时结果现在将为 pd.NA
而不是 np.nan
(GH 30958)。
pandas 0.25.x
In [1]: pd.Series(a).sum(skipna=False)
Out[1]:
nan
pandas 1.0.0
In [43]: pd.Series(a).sum(skipna=False)
Out[43]: <NA>
value_counts 返回可为空的整数 dtype
带有可为空整数 dtype 的 Series.value_counts()
现在返回可为空整数 dtype 的值。
pandas 0.25.x
In [1]: pd.Series([2, 1, 1, None], dtype="Int64").value_counts().dtype
Out[1]:
dtype('int64')
pandas 1.0.0
In [44]: pd.Series([2, 1, 1, None], dtype="Int64").value_counts().dtype
Out[44]: Int64Dtype()
有关 pandas.NA
和 numpy.nan
之间的差异,请参阅 NA 语义。
arrays.IntegerArray
的比较现在返回arrays.BooleanArray
对arrays.IntegerArray
进行比较操作现在返回一个arrays.BooleanArray
而不是 NumPy 数组 (GH 29964)。
pandas 0.25.x
In [1]: a = pd.array([1, 2, None], dtype="Int64")
In [2]: a
Out[2]:
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64
In [3]: a > 1
Out[3]:
array([False, True, False])
pandas 1.0.0
In [45]: a = pd.array([1, 2, None], dtype="Int64")
In [46]: a > 1
Out[46]:
<BooleanArray>
[False, True, <NA>]
Length: 3, dtype: boolean
请注意,现在缺失值会传播,而不像numpy.nan
那样总是不相等。 更多信息请参见 NA 语义。
默认情况下,Categorical.min()
现在返回最小值而不是 np.nan
当Categorical
包含np.nan
时,默认情况下 Categorical.min()
不再返回 np.nan
(skipna=True) (GH 25303)
pandas 0.25.x
In [1]: pd.Categorical([1, 2, np.nan], ordered=True).min()
Out[1]: nan
pandas 1.0.0
In [47]: pd.Categorical([1, 2, np.nan], ordered=True).min()
Out[47]: 1
空的pandas.Series
的默认 dtype
在不指定 dtype 的情况下初始化空的pandas.Series
现在会引发 DeprecationWarning
(GH 17261)。 默认 dtype 将在未来版本中从 float64
更改为 object
,以使其与DataFrame
和Index
的行为一致。
pandas 1.0.0
In [1]: pd.Series()
Out[2]:
DeprecationWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
Series([], dtype: float64)
resample 操作的结果 dtype 推断发生了变化
在扩展类型的情况下,DataFrame.resample()
聚合的结果 dtype 规则已更改 (GH 31359)。 以前,pandas 会尝试将结果转换回原始 dtype,如果不可能,则返回到通常的推断规则。 现在,只有当结果中的标量值是扩展 dtype 的标量类型的实例时,pandas 才会返回原始 dtype 的结果。
In [48]: df = pd.DataFrame({"A": ['a', 'b']}, dtype='category',
....: index=pd.date_range('2000', periods=2))
....:
In [49]: df
Out[49]:
A
2000-01-01 a
2000-01-02 b
pandas 0.25.x
In [1]> df.resample("2D").agg(lambda x: 'a').A.dtype
Out[1]:
CategoricalDtype(categories=['a', 'b'], ordered=False)
pandas 1.0.0
In [50]: df.resample("2D").agg(lambda x: 'a').A.dtype
Out[50]: CategoricalDtype(categories=['a', 'b'], ordered=False, categories_dtype=object)
这修复了resample
和groupby
之间的不一致性。 这也修复了一个潜在的 bug,即结果的值可能会根据结果被转换回原始 dtype 的方式而改变。
pandas 0.25.x
In [1] df.resample("2D").agg(lambda x: 'c')
Out[1]:
A
0 NaN
pandas 1.0.0
In [51]: df.resample("2D").agg(lambda x: 'c')
Out[51]:
A
2000-01-01 c
增加了 Python 的最低版本要求
pandas 1.0.0 支持 Python 3.6.1 及更高版本 (GH 29212)。 ### 增加了依赖项的最低版本要求
一些依赖项的最低受支持版本已更新 (GH 29766, GH 29723)。如果已安装,则现在需要:
包名 | 最低版本 | 需要 | 更改 |
---|---|---|---|
numpy | 1.13.3 | X | |
pytz | 2015.4 | X | |
python-dateutil | 2.6.1 | X | |
bottleneck | 1.2.1 | ||
numexpr | 2.6.2 | ||
pytest(开发版) | 4.0.2 |
对于可选库,一般建议使用最新版本。以下表格列出了 pandas 开发过程中当前正在测试的每个库的最低版本。最低测试版本以下的可选库可能仍然可用,但不被视为受支持。
包名 | 最低版本 | 更改 |
---|---|---|
beautifulsoup4 | 4.6.0 | |
fastparquet | 0.3.2 | X |
gcsfs | 0.2.2 | |
lxml | 3.8.0 | |
matplotlib | 2.2.2 | |
numba | 0.46.0 | X |
openpyxl | 2.5.7 | X |
pyarrow | 0.13.0 | X |
pymysql | 0.7.1 | |
pytables | 3.4.2 | |
s3fs | 0.3.0 | X |
scipy | 0.19.0 | |
sqlalchemy | 1.1.4 | |
xarray | 0.8.2 | |
xlrd | 1.1.0 | |
xlsxwriter | 0.9.8 | |
xlwt | 1.2.0 |
更多信息,请参阅 依赖关系 和 可选依赖项。
构建变更
pandas 已经添加了 pyproject.toml 文件,并且不再将 Cython 化的文件包含在上传到 PyPI 的源分发中 (GH 28341, GH 20775)。如果您正在安装构建好的分发版(wheel)或通过 conda 安装,这对您不会产生任何影响。如果您要从源代码构建 pandas,则在调用 pip install pandas
之前,您不再需要在构建环境中安装 Cython。
其他 API 更改
-
DataFrameGroupBy.transform()
和SeriesGroupBy.transform()
现在在无效操作名称时引发异常 (GH 27489) -
pandas.api.types.infer_dtype()
现在将返回“integer-na”作为整数和np.nan
混合的类型 (GH 27283) -
MultiIndex.from_arrays()
如果显式提供names=None
,将不再从数组中推断名称 (GH 27292) -
为了改进 tab 补全,pandas 在使用
dir
内省 pandas 对象时不包括大多数已弃用的属性(例如dir(df)
)。要查看排除的属性,请查看对象的_deprecations
属性,例如pd.DataFrame._deprecations
(GH 28805). -
unique()
的返回 dtype 现在与输入 dtype 匹配。 (GH 27874) -
将
options.matplotlib.register_converters
的默认配置值从True
更改为"auto"
(GH 18720). 现在,pandas 自定义格式化程序仅适用于由 pandas 创建的图表,通过plot()
。 以前,pandas 的格式化程序将应用于在plot()
之后创建的所有图表。有关更多信息,请参阅单位注册。 -
Series.dropna()
已经删除了其**kwargs
参数,改为单个how
参数。 以前向**kwargs
提供除how
之外的任何内容会引发TypeError
(GH 29388) -
在测试 pandas 时,新的最低要求版本的 pytest 是 5.0.1 (GH 29664)
-
Series.str.__iter__()
已被弃用,并将在未来版本中删除 (GH 28277). -
将
<NA>
添加到read_csv()
的默认 NA 值列表中 (GH 30821) ### 文档改进 -
添加了关于大型数据集的扩展的新部分 (GH 28315).
-
为 HDF5 数据集添加了关于查询 MultiIndex 的子部分 (GH 28791). ## 弃用
-
Series.item()
和Index.item()
已经取消弃用 (GH 29250) -
Index.set_value
已被弃用。对于给定的索引idx
,数组arr
,idx
中的值idx_val
和新值val
,idx.set_value(arr, idx_val, val)
等同于arr[idx.get_loc(idx_val)] = val
,应使用后者替代 (GH 28621). -
is_extension_type()
已被弃用,应使用is_extension_array_dtype()
替代 (GH 29457) -
eval()
中关键字参数 “truediv” 已被弃用,并将在将来的版本中移除 (GH 29812) -
DateOffset.isAnchored()
和DatetOffset.onOffset()
已被弃用,并将在将来的版本中移除,应使用DateOffset.is_anchored()
和DateOffset.is_on_offset()
替代 (GH 30340) -
pandas.tseries.frequencies.get_offset
已被弃用,并将在将来的版本中移除,应使用pandas.tseries.frequencies.to_offset
替代 (GH 4205) -
Categorical.take_nd()
和CategoricalIndex.take_nd()
已被弃用,应使用Categorical.take()
和CategoricalIndex.take()
替代 (GH 27745) -
Categorical.min()
和Categorical.max()
中的参数numeric_only
已被弃用,并替换为skipna
(GH 25303) -
lreshape()
中的参数label
已被弃用,并将在将来的版本中移除 (GH 29742) -
pandas.core.index
已被弃用,并将在将来的版本中移除,公共类已在顶级命名空间中可用 (GH 19711) -
pandas.json_normalize()
现在暴露在顶级命名空间中。json_normalize
作为pandas.io.json.json_normalize
的用法已经被弃用,推荐使用pandas.json_normalize()
替代 (GH 27586). -
pandas.read_json()
的numpy
参数已被弃用 (GH 28512). -
DataFrame.to_stata()
,DataFrame.to_feather()
和DataFrame.to_parquet()
参数“fname”已弃用,请改用“path”代替 (GH 23574) -
RangeIndex
的已弃用内部属性_start
、_stop
和_step
现在会引发FutureWarning
而不是DeprecationWarning
(GH 26581) -
pandas.util.testing
模块已弃用。请使用文档化的pandas.testing
中的公共 API,详见 Assertion functions (GH 16232). -
pandas.SparseArray
已弃用。请使用pandas.arrays.SparseArray
(arrays.SparseArray
) 代替。 (GH 30642) -
Series.take()
和DataFrame.take()
的参数is_copy
已弃用,并将在将来的版本中移除。 (GH 27357) -
在
Index
上支持多维索引(例如index[:, None]
)已弃用,并将在将来的版本中移除,转换为 numpy 数组后再进行索引 (GH 30588) -
pandas.np
子模块现已弃用。请直接导入 numpy 代替 (GH 30296) -
pandas.datetime
类现已弃用。请从datetime
导入代替 (GH 30610) -
在将来,
diff
将引发TypeError
而不是隐式丢失扩展类型的 dtype。在调用diff
之前,请先转换为正确的 dtype (GH 31025)
从分组的 DataFrame 中选择列
当从 DataFrameGroupBy
对象中选择列时,传递单个键(或键的元组)在单个括号内已弃用,应改为使用项目列表。 (GH 23566) 例如:
df = pd.DataFrame({
"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
"B": np.random.randn(8),
"C": np.random.randn(8),
})
g = df.groupby('A')
# single key, returns SeriesGroupBy
g['B']
# tuple of single key, returns SeriesGroupBy
g[('B',)]
# tuple of multiple keys, returns DataFrameGroupBy, raises FutureWarning
g[('B', 'C')]
# multiple keys passed directly, returns DataFrameGroupBy, raises FutureWarning
# (implicitly converts the passed strings into a single tuple)
g['B', 'C']
# proper way, returns DataFrameGroupBy
g[['B', 'C']]
``` ## 移除之前版本的弃用/更改
**删除了 SparseSeries 和 SparseDataFrame**
`SparseSeries`,`SparseDataFrame` 和 `DataFrame.to_sparse` 方法已删除 ([GH 28425](https://github.com/pandas-dev/pandas/issues/28425))。我们建议改用具有稀疏值的 `Series` 或 `DataFrame`。
**Matplotlib 单位注册**
以前,pandas 会在导入 pandas 的过程中作为副作用向 matplotlib 注册转换器 ([GH 18720](https://github.com/pandas-dev/pandas/issues/18720))。这会改变在导入 pandas 后通过 matplotlib 绘制的图形的输出,即使您直接使用 matplotlib 而不是 `plot()`。
若要在 matplotlib 绘图中使用 pandas 格式化程序,请指定
```py
In [1]: import pandas as pd
In [2]: pd.options.plotting.matplotlib.register_converters = True
请注意,由 DataFrame.plot()
和 Series.plot()
创建的图形 会 自动注册转换器。唯一的行为更改是通过 matplotlib.pyplot.plot
或 matplotlib.Axes.plot
绘制日期类似对象时的情况。更多信息请参见用于时间序列绘图的自定义格式化程序。
其他删除
-
从
read_stata()
,StataReader
和StataReader.read()
中删除了先前废弃的关键字“index”,改用“index_col”代替 (GH 17328) -
删除了
StataReader.data
方法,请改用StataReader.read()
(GH 9493) -
删除了
pandas.plotting._matplotlib.tsplot
,请改用Series.plot()
(GH 19980) -
pandas.tseries.converter.register
已移至pandas.plotting.register_matplotlib_converters()
(GH 18307) -
Series.plot()
不再接受位置参数,请改为传递关键字参数 (GH 30003) -
DataFrame.hist()
和Series.hist()
不再允许figsize="default"
,请通过传递元组指定图形大小 (GH 30003) -
整数 dtype 数组除以
Timedelta
现在会引发TypeError
(GH 21036) -
TimedeltaIndex
和DatetimeIndex
不再接受非纳秒 dtype 字符串,如“timedelta64”或“datetime64”,请改用“timedelta64[ns]”和“datetime64[ns]”(GH 24806) -
将
pandas.api.types.infer_dtype()
中默认的“skipna”参数从False
更改为True
(GH 24050) -
删除了
Series.ix
和DataFrame.ix
(GH 26438) -
删除了
Index.summary
(GH 18217) -
从
Index
构造函数中删除了先前不推荐使用的关键字“fastpath”(GH 23110) -
删除了
Series.get_value
,Series.set_value
,DataFrame.get_value
,DataFrame.set_value
(GH 17739) -
删除了
Series.compound
和DataFrame.compound
(GH 26405) -
将
DataFrame.set_index()
和Series.set_axis()
中默认的“inplace”参数从None
更改为False
(GH 27600) -
删除了
Series.cat.categorical
,Series.cat.index
,Series.cat.name
(GH 24751) -
从
to_datetime()
和to_timedelta()
中删除了先前不推荐使用的关键字“box”;此外,这些现在始终返回DatetimeIndex
、TimedeltaIndex
、Index
、Series
或DataFrame
(GH 24486) -
to_timedelta()
、Timedelta
和TimedeltaIndex
不再允许“M”、“y”或“Y”作为“unit”参数(GH 23264) -
从(非公开)
offsets.generate_range
中删除了先前弃用的关键字“time_rule”,该关键字已移至core.arrays._ranges.generate_range()
(GH 24157) -
当使用类似列表的索引器和缺失标签的
DataFrame.loc()
或Series.loc()
时,将不再重新索引(GH 17295) -
DataFrame.to_excel()
和Series.to_excel()
中不存在的列将不再重新索引(GH 17295) -
从
concat()
中删除了先前弃用的关键字“join_axes”,请在结果上使用reindex_like
代替(GH 22318) -
从
DataFrame.sort_index()
中删除了先前弃用的关键字“by”,请改用DataFrame.sort_values()
(GH 10726) -
在
DataFrame.aggregate()
、Series.aggregate()
、core.groupby.DataFrameGroupBy.aggregate()
、core.groupby.SeriesGroupBy.aggregate()
、core.window.rolling.Rolling.aggregate()
中移除了对嵌套重命名的支持(GH 18529) -
将
datetime64
数据传递给TimedeltaIndex
或timedelta64
数据传递给DatetimeIndex
现在会引发TypeError
(GH 23539、GH 23937) -
将
int64
值传递给DatetimeIndex
并且传递时区时,现在会将值解释为 UTC 中的纳秒时间戳,而不是给定时区中的墙上时间(GH 24559) -
传递给
DataFrame.groupby()
的元组现在被专门视为单个键(GH 18314) -
移除了
Index.contains
,改用key in index
(GH 30103) -
不再允许在
Timestamp
、DatetimeIndex
、TimedeltaIndex
中进行int
或整数数组的加减操作,而是使用obj + n * obj.freq
而不是obj + n
(GH 22535) -
移除了
Series.ptp
(GH 21614) -
移除了
Series.from_array
(GH 18258) -
移除了
DataFrame.from_items
(GH 18458) -
移除了
DataFrame.as_matrix
、Series.as_matrix
(GH 18458) -
移除了
Series.asobject
(GH 18477) -
移除了
DataFrame.as_blocks
、Series.as_blocks
、DataFrame.blocks
、Series.blocks
(GH 17656) -
pandas.Series.str.cat()
现在默认对齐others
,使用join='left'
(GH 27611) -
pandas.Series.str.cat()
不再接受列表形式的嵌套列表了(GH 27611) -
Series.where()
在Categorical
数据类型上(或者在具有Categorical
列的DataFrame.where()
)不再允许设置新的分类(GH 24114) -
从
DatetimeIndex
、TimedeltaIndex
、PeriodIndex
构造器中移除了先前弃用的关键字 “start”、“end” 和 “periods”,请使用date_range()
、timedelta_range()
和period_range()
替代 (GH 23919) -
从
DatetimeIndex
和TimedeltaIndex
构造器中移除了先前弃用的关键字 “verify_integrity” (GH 23919) -
从
pandas.core.internals.blocks.make_block
中移除了先前弃用的关键字 “fastpath” (GH 19265) -
从
Block.make_block_same_class()
中移除了先前弃用的关键字 “dtype” (GH 19434) -
移除了
ExtensionArray._formatting_values
。请使用ExtensionArray._formatter
替代。 (GH 23601) -
移除了
MultiIndex.to_hierarchical
(GH 21613) -
移除了
MultiIndex.labels
,请使用MultiIndex.codes
替代 (GH 23752) -
从
MultiIndex
构造器中移除了先前弃用的关键字 “labels”,请使用 “codes” 替代 (GH 23752) -
移除了
MultiIndex.set_labels
,请使用MultiIndex.set_codes()
替代 (GH 23752) -
从
MultiIndex.set_codes()
、MultiIndex.copy()
、MultiIndex.drop()
中移除了先前弃用的关键字 “labels”,请使用 “codes” 替代 (GH 23752) -
移除了对旧版 HDF5 格式的支持(GH 29787)
-
不再允许向
DatetimeTZDtype
传递 dtype 别名(例如 ‘datetime64[ns, UTC]’),请改用DatetimeTZDtype.construct_from_string()
(GH 23990) -
从
read_excel()
中移除了先前废弃的关键词 “skip_footer”,改用 “skipfooter”(GH 18836) -
read_excel()
不再允许整数值作为参数usecols
,而是传递一个从 0 到usecols
(包括)的整数列表(GH 23635) -
从
DataFrame.to_records()
中移除了先前废弃的关键词 “convert_datetime64”(GH 18902) -
放弃使用
IntervalIndex.from_intervals
,改用IntervalIndex
构造函数(GH 19263) -
将
DatetimeIndex.to_series()
中默认的 “keep_tz” 参数从None
改为True
(GH 23739) -
移除了
api.types.is_period
和api.types.is_datetimetz
(GH 23917) -
移除了对使用 pandas 0.16 之前版本创建的包含
Categorical
实例的 pickle 的读取支持(GH 27538) -
移除了
pandas.tseries.plotting.tsplot
(GH 18627) -
从
DataFrame.apply()
中移除了先前废弃的关键词 “reduce” 和 “broadcast”(GH 18577) -
移除了先前废弃的
pandas._testing
中的assert_raises_regex
函数(GH 29174) -
移除了
pandas.core.indexes.frozen
中先前废弃的FrozenNDArray
类(GH 29335) -
从
read_feather()
中移除了之前废弃的关键字“nthreads”,使用“use_threads”代替(GH 23053) -
移除了
Index.is_lexsorted_for_tuple
(GH 29305) -
在
DataFrame.aggregate()
,Series.aggregate()
,core.groupby.DataFrameGroupBy.aggregate()
,core.groupby.SeriesGroupBy.aggregate()
,core.window.rolling.Rolling.aggregate()
中移除了对嵌套重命名的支持(GH 29608) -
移除了
Series.valid
;使用Series.dropna()
代替(GH 18800) -
移除了
DataFrame.is_copy
,Series.is_copy
(GH 18812) -
移除了
DataFrame.get_ftype_counts
,Series.get_ftype_counts
(GH 18243) -
移除了
DataFrame.ftypes
,Series.ftypes
,Series.ftype
(GH 26744) -
移除了
Index.get_duplicates
,使用idx[idx.duplicated()].unique()
代替(GH 20239) -
移除了
Series.clip_upper
,Series.clip_lower
,DataFrame.clip_upper
,DataFrame.clip_lower
(GH 24203) -
移除了更改
DatetimeIndex.freq
,TimedeltaIndex.freq
,或PeriodIndex.freq
的能力(GH 20772) -
移除了
DatetimeIndex.offset
(GH 20730) -
移除了
DatetimeIndex.asobject
,TimedeltaIndex.asobject
,PeriodIndex.asobject
,使用astype(object)
代替(GH 29801) -
从
factorize()
中移除了先前弃用的关键字“order”(GH 19751) -
从
read_stata()
和DataFrame.to_stata()
中移除了先前弃用的关键字“encoding”(GH 21400) -
将
concat()
中的默认“sort”参数从None
更改为False
(GH 20613) -
从
DataFrame.update()
中移除了先前弃用的关键字“raise_conflict”,请改用“errors”(GH 23585) -
从
DatetimeIndex.shift()
、TimedeltaIndex.shift()
、PeriodIndex.shift()
中移除了先前弃用的关键字“n”,请改用“periods”(GH 22458) -
从
DataFrame.resample()
中移除了先前弃用的关键字“how”、“fill_method”和“limit”(GH 30139) -
现在将整数传递给具有
timedelta64[ns]
dtype 的Series.fillna()
或DataFrame.fillna()
会引发TypeError
(GH 24694) -
不再支持将多个轴传递给
DataFrame.dropna()
(GH 20995) -
移除了
Series.nonzero
,请使用to_numpy().nonzero()
代替(GH 24048) -
不再支持将浮点
codes
传递给Categorical.from_codes()
,请改为传递codes.astype(np.int64)
(GH 21775) -
从
Series.str.partition()
和Series.str.rpartition()
中移除了先前弃用的关键字“pat”,请改用“sep”(GH 23767) -
移除了
Series.put
(GH 27106) -
移除了
Series.real
,Series.imag
(GH 27106) -
移除了
Series.to_dense
,DataFrame.to_dense
(GH 26684) -
移除了
Index.dtype_str
, 使用str(index.dtype)
替代 (GH 27106) -
Categorical.ravel()
返回Categorical
而不是ndarray
(GH 27199) -
不再支持在 Numpy ufuncs 上的 'outer' 方法,例如在
Series
对象上操作的np.subtract.outer
,将引发NotImplementedError
(GH 27198) -
移除了
Series.get_dtype_counts
和DataFrame.get_dtype_counts
(GH 27145) -
将
Categorical.take()
中fill_value
参数的默认值从True
改为False
(GH 20841) -
将
Series.rolling().apply()
,DataFrame.rolling().apply()
,Series.expanding().apply()
, 和DataFrame.expanding().apply()
中raw
参数的默认值从None
改为False
(GH 20584) -
移除了
Series.argmin()
和Series.argmax()
的弃用行为,请使用Series.idxmin()
和Series.idxmax()
替代旧行为 (GH 16955) -
现在,将带有时区信息的
datetime.datetime
或Timestamp
传递给具有tz
参数的Timestamp
构造函数会引发ValueError
(GH 23621) -
移除了
Series.base
,Index.base
,Categorical.base
,Series.flags
,Index.flags
,PeriodArray.flags
,Series.strides
,Index.strides
,Series.itemsize
,Index.itemsize
,Series.data
,Index.data
(GH 20721) -
将
Timedelta.resolution()
更改为与标准库datetime.timedelta.resolution
的行为匹配,对于旧的行为,请使用Timedelta.resolution_string()
(GH 26839) -
移除了
Timestamp.weekday_name
,DatetimeIndex.weekday_name
, 和Series.dt.weekday_name
(GH 18164) -
在
Timestamp.tz_localize()
,DatetimeIndex.tz_localize()
, 和Series.tz_localize()
中移除了先前弃用的关键字“errors” (GH 22644) -
将
CategoricalDtype
中的默认“ordered”参数从None
改为False
(GH 26336) -
Series.set_axis()
和DataFrame.set_axis()
现在要求将“labels”作为第一个参数,并将“axis”作为可选的命名参数(GH 30089) -
移除了
to_msgpack
,read_msgpack
,DataFrame.to_msgpack
,Series.to_msgpack
(GH 27103) -
移除了
Series.compress
(GH 21930) -
从
Categorical.fillna()
中移除了先前弃用的关键字“fill_value”,改用“value”代替(GH 19269) -
从
andrews_curves()
中移除了先前弃用的关键字“data”,改用“frame”代替(GH 6956) -
从
parallel_coordinates()
中移除了先前弃用的关键字“data”,改用“frame”代替(GH 6956) -
从
parallel_coordinates()
中移除了先前弃用的关键字“colors”,改用“color”代替(GH 6956) -
从
read_gbq()
中移除了先前弃用的关键字“verbose”和“private_key”(GH 30200) -
在具有时区信息的
Series
和DatetimeIndex
上调用np.array
和np.asarray
现在会返回一个具有时区信息的Timestamp
对象数组(GH 24596) ## 性能改进 -
与非唯一
IntervalIndex
进行索引时的性能改进(GH 27489) -
MultiIndex.is_monotonic
的性能改进(GH 27495) -
当
bins
是IntervalIndex
时,cut()
的性能改进(GH 27668) -
初始化
DataFrame
使用range
时的性能改进(GH 30171) -
当
method
为"spearman"
时,DataFrame.corr()
的性能改进(GH 28139) -
当提供要替换的值列表时,
DataFrame.replace()
的性能改进(GH 28099) -
在
DataFrame.select_dtypes()
中使用矢量化而不是循环迭代进行性能改进(GH 28317) -
Categorical.searchsorted()
和CategoricalIndex.searchsorted()
的性能改进(GH 28795) -
当将
Categorical
与标量进行比较且标量未在类别中找到时的性能改进(GH 29750) -
在检查
Categorical
中的值是否等于、大于或大于给定标量时,性能有所提升。如果检查Categorical
是否小于或小于等于标量,则不会有改进(GH 29820) -
改进了
Index.equals()
和MultiIndex.equals()
的性能(GH 29134) -
在
infer_dtype()
中改进了性能,当skipna
为True
时(GH 28814) ## Bug 修复
Categorical
-
添加了测试以断言
fillna()
在值不是类别中的值时会引发正确的ValueError
消息(GH 13628) -
在
Categorical.astype()
中存在错误,当转换为整数时,NaN
值处理不正确(GH 28406) -
当目标包含重复项时,使用
CategoricalIndex
的DataFrame.reindex()
会失败,并且如果源包含重复项,则不会失败(GH 28107) -
在
Categorical.astype()
中存在错误,不允许转换为扩展数据类型(GH 28668) -
merge()
无法连接分类和扩展数据类型列时存在错误(GH 28668) -
Categorical.searchsorted()
和CategoricalIndex.searchsorted()
现在也适用于无序的分类变量(GH 21667) -
添加了测试以断言使用
DataFrame.to_parquet()
或read_parquet()
将字符串类型的 Parquet 回转时会保留分类数据类型(GH 27955) -
将
Categorical.remove_categories()
中的错误消息更改为始终以集合形式显示无效的移除项(GH 28669) -
在分类数据类型的
Series
上使用日期访问器时,未返回与在该类型的Series
上使用str.()
/dt.()
相同类型的对象。例如,当在具有重复条目的Categorical
上访问Series.dt.tz_localize()
时��访问器会跳过重复项 (GH 27952) -
DataFrame.replace()
和Series.replace()
中的错误,会在分类数据上产生不正确的结果(GH 26988) -
调用
Categorical.min()
或Categorical.max()
时出现的错误,会在空的分类数据上引发 numpy 异常 (GH 30227) -
当通过
groupby(..., observed=False)
调用以下方法时,现在还会正确输出未观察到的类别的值 (GH 17605) *core.groupby.SeriesGroupBy.count()
*core.groupby.SeriesGroupBy.size()
*core.groupby.SeriesGroupBy.nunique()
*core.groupby.SeriesGroupBy.nth()
Datetimelike
-
Series.__setitem__()
中的错误,将np.timedelta64("NaT")
错误地转换为np.datetime64("NaT")
,当插入到具有 datetime64 数据类型的Series
时(GH 27311) -
Series.dt()
属性查找在底层数据为只读时出现错误(GH 27529) -
HDFStore.__getitem__
中的错误,错误地读取在 Python 2 中创建的 tz 属性(GH 26443) -
to_datetime()
中的一个错误,当传递格式不正确的str
数组且使用errors=”coerce”
参数时,可能会错误地引发ValueError
(GH 28299) -
在
core.groupby.SeriesGroupBy.nunique()
中存在一个错误,其中NaT
值干扰了唯一值的计数(GH 27951) -
在
Timestamp
减法中,从np.datetime64
对象中减去一个Timestamp
会错误地引发TypeError
(GH 28286) -
使用
Timestamp
进行整数或整数 dtype 数组的加法和减法现在会引发NullFrequencyError
而不是ValueError
(GH 28268) -
在
Series
和DataFrame
中存在一个错误,当添加或减去一个np.datetime64
对象时,整数 dtype 未能引发TypeError
(GH 28080) -
在
Series.astype()
、Index.astype()
和DataFrame.astype()
中存在一个错误,当转换为整数 dtype 时未能处理NaT
(GH 28492) -
在
Week
中存在一个错误,当添加或减去无效类型时,weekday
错误地引发AttributeError
而不是TypeError
(GH 28530) -
在
DataFrame
的算术操作中,当与 dtype 为'timedelta64[ns]'
的Series
进行操作时存在一个错误(GH 28049) -
在
core.groupby.generic.SeriesGroupBy.apply()
中存在一个错误,当原始 DataFrame 中的列是 datetime 且列标签不是标准整数时,会引发ValueError
(GH 28247) -
在
pandas._config.localization.get_locales()
中的错误,locales -a
将地区编码为 windows-1252(GH 23638,GH 24760,GH 27368) -
使用
timedelta64[ns]
类型调用时未引发TypeError
的错误Series.var()
(GH 28289) -
内联代码
DatetimeIndex.strftime()
和Series.dt.strftime()
中的错误,将NaT
转换为字符串'NaT'
而不是np.nan
(GH 29578) -
使用长度不正确的布尔掩码遮盖类似日期时间的数组时未引发
IndexError
的错误(GH 30308) -
Timestamp.resolution
为属性而不是类属性的错误(GH 29910) -
调用
None
时pandas.to_datetime()
报TypeError
而不是返回NaT
的错误(GH 30011) -
使用
deque
对象时pandas.to_datetime()
在使用cache=True
(默认)时未成功转换的错误(GH 29403) -
对于具有
datetime64
或timedelta64
类型的Series.item()
,DatetimeIndex.item()
和TimedeltaIndex.item()
返回整数而不是Timestamp
或Timedelta
的错误(GH 30175) -
在添加非优化的
DateOffset
时DatetimeIndex
错误地删除时区信息(GH 30336) -
在尝试删除不存在的值时
DataFrame.drop()
从 DatetimeIndex 中产生令人困惑的错误消息(GH 30399) -
DataFrame.append()
中的一个 bug 会移除新数据的时区感知性(GH 30238) -
Series.cummin()
和Series.cummax()
中的一个 bug,具有时区感知 dtype 的错误删除其时区信息(GH 15553) -
DatetimeArray
、TimedeltaArray
和PeriodArray
中的一个 bug,就地加法和减法实际上并未就地操作(GH 24115) -
在使用存储
IntegerArray
的Series
调用pandas.to_datetime()
时,错误地引发TypeError
而不是返回Series
的一个 bug(GH 30050) -
date_range()
中的一个 bug,使用自定义工作时间作为freq
和给定的periods
数量时(GH 30593) -
PeriodIndex
比较中的一个 bug,将整数不正确地转换为Period
对象,与Period
比较行为不一致(GH 30722) -
DatetimeIndex.insert()
中的一个 bug,在尝试将时区感知的Timestamp
插入时区无关的DatetimeIndex
时引发ValueError
而不是TypeError
,反之亦然(GH 30806)
时间差
- 从
np.datetime64
对象中减去TimedeltaIndex
或TimedeltaArray
的一个 bug(GH 29558)
时区
数值
-
DataFrame.quantile()
中的一个 bug,对零列DataFrame
不正确地引发异常(GH 23925) -
DataFrame
弹性不等式比较方法(DataFrame.lt()
,DataFrame.le()
,DataFrame.gt()
,DataFrame.ge()
)与对象类型和complex
入口的Series
类似 (GH 28079),未能像它们的Series
对应项那样引发TypeError
。 -
在
DataFrame
逻辑操作(&
、|
、^
)中存在错误,未填充 NA 值以匹配Series
的行为 (GH 28741) -
在指定轴名之前引用变量的情况下存在
DataFrame.interpolate()
中的错误 (GH 29142) -
Series.var()
中的错误,在不通过 ddof 参数传递空置整数 dtype 系列时未计算出正确的值 (GH 29128) -
当使用
frac
> 1 和replace
= False 时改进了错误消息(GH 27451) -
数字索引中的错误导致可以使用无效的 dtype(例如类似 datetime 的)实例化
Int64Index
、UInt64Index
或Float64Index
(GH 29539) -
在使用值在
np.uint64
范围内的列表构建时,UInt64Index
出现精度损失的错误 (GH 29526) -
在使用
np.uint64
范围内的整数进行索引时,导致索引失败的NumericIndex
构造错误 (GH 28023) -
在使用值在
np.uint64
范围内的整数索引DataFrame
时,导致NumericIndex
被转换为Float64Index
的错误 (GH 28279) -
当使用未排序索引的方法=
index
时,Series.interpolate()
中存在的错误 (GH 21037),之前会返回不正确的结果。 -
在
DataFrame.round()
中存在漏洞,当具有CategoricalIndex
列的DataFrame
错误地引发TypeError
(GH 30063) -
当存在重复索引时,
Series.pct_change()
和DataFrame.pct_change()
存在漏洞(GH 30463) -
在
DataFrame
累积操作(例如 cumsum, cummax)时存在漏洞,将不正确地转换为对象 dtype(GH 19296) -
在
diff
中存在漏洞导致扩展类型的 dtype 丢失(GH 30889) -
当其中一列是可空整数 dtype 时,
DataFrame.diff
存在漏洞会引发IndexError
(GH 30967)
转换
字符串
- 对于空的
Series
调用Series.str.isalnum()
(以及其他“ismethods”),会返回object
dtype 而不是bool
(GH 29624)
区间
-
在
IntervalIndex.get_indexer()
中存在漏洞,当Categorical
或CategoricalIndex
target
错误地引发TypeError
(GH 30063) -
在
pandas.core.dtypes.cast.infer_dtype_from_scalar
中存在漏洞,当传递pandas_dtype=True
时没有推断出IntervalDtype
(GH 30337) -
修复了
Series
构造函数中,从Interval
对象列表构造Series
导致object
dtype 而不是IntervalDtype
的错误(GH 23563) -
修复了
IntervalDtype
中kind
属性错误地设置为None
而不是"O"
的错误(GH 30568) -
修复了具有间隔数据的
IntervalIndex
、IntervalArray
和Series
中相等比较错误的错误(GH 24112)
索引
-
修复了使用反向切片进行赋值时的错误(GH 26939)
-
修复了
DataFrame.explode()
在索引中存在重复项时会复制框架的错误(GH 28010) -
修复了使用其他类型索引重新索引
PeriodIndex()
时出现的错误,该索引包含了一个Period
(GH 28323)(GH 28337) -
修复了通过
.loc
分配列时,使用 numpy 非 ns 日期时间类型时的错误(GH 27395) -
修复了
Float64Index.astype()
中np.inf
在转换为整数 dtype 时未正确处理的错误(GH 28475) -
Index.union()
在左侧包含重复项时可能会失败(GH 28257) -
修复了使用
.loc
进行索引时,索引为CategoricalIndex
且非字符串���别时无法正常工作的错误(GH 17569, GH 30225) -
Index.get_indexer_non_unique()
在某些情况下可能会出现TypeError
,例如在字符串索引中搜索整数时(GH 28257) -
Float64Index.get_loc()
中的错误,错误地引发TypeError
而不是KeyError
(GH 29189) -
在设置分类值的 1 行 DataFrame 时,
DataFrame.loc()
中的错误 dtype (GH 25495) -
MultiIndex.get_loc()
在输入包含缺失值时无法找到缺失值 (GH 19132) -
在使用布尔索引器时,
Series.__setitem__()
中的错误会在新数据的长度与True
值的数量匹配且新数据不是Series
或np.array
时错误地分配值 (GH 30567) -
使用
PeriodIndex
进行索引时的错误,错误地接受代表年份的整数,应使用ser.loc["2007"]
而不是ser.loc[2007]
(GH 30763)
缺失
MultiIndex
-
构造函数
MultiIndex
验证给定的sortorder
是否与实际的lexsort_depth
兼容,如果verify_integrity
参数为True
(默认)(GH 28735) -
Series 和 MultiIndex
.drop
与MultiIndex
在给定级别上不存在标签时会引发异常 (GH 8594)
IO
-
read_csv()
现在在使用 Python csv 引擎时接受二进制模式文件缓冲区 (GH 23779) -
在
DataFrame.to_json()
中的错误,使用元组作为列或索引值并使用orient="columns"
或orient="index"
会产生无效的 JSON (GH 20500) -
改进无穷大解析。
read_csv()
现在将Infinity
、+Infinity
、-Infinity
解释为浮点数值 (GH 10065) -
在
DataFrame.to_csv()
中的错误,当na_rep
的长度短于文本输入数据时,值被截断。 (GH 25099) -
Bug in
DataFrame.to_string()
使用显示选项截断值而不是输出完整内容时(GH 9784) -
Bug in
DataFrame.to_json()
使用orient="table"
时,日期时间列标签不会以 ISO 格式写出(GH 28130) -
Bug in
DataFrame.to_parquet()
使用engine='fastparquet'
写入 GCS 时,如果文件不存在,则会失败(GH 28326) -
Bug in
read_hdf()
当引发异常时关闭未打开的存储(GH 28699) -
Bug in
DataFrame.read_json()
使用orient="index"
时无法保持顺序(GH 28557) -
Bug in
DataFrame.to_html()
未验证formatters
参数的长度(GH 28469) -
Bug in
DataFrame.read_excel()
使用engine='ods'
时,sheet_name
参数引用不存在的工作表时(GH 27676) -
Bug in
pandas.io.formats.style.Styler()
对浮点值的格式化未正确显示小数位数(GH 13257) -
Bug in
DataFrame.to_html()
在同时使用formatters=<list>
和max_cols
时。 (GH 25955) -
Bug in
Styler.background_gradient()
无法与 dtypeInt64
一起使用(GH 28869) -
Bug in
DataFrame.to_clipboard()
在 ipython 中不可靠(GH 22707) -
Bug in
read_json()
中默认编码未设置为utf-8
(GH 29565) -
Bug in
PythonParser
处理十进制字段时混合使用 str 和 bytes(GH 29650) -
read_gbq()
现在接受progress_bar_type
参数,在数据下载时显示进度条。(GH 29857) -
在
pandas.io.json.json_normalize()
中存在错误,当record_path
指定的位置缺失值时会引发TypeError
(GH 30148) -
read_excel()
现在接受二进制数据(GH 15914) -
read_csv()
中存在错误,其中编码处理仅限于 C 引擎的字符串utf-16
(GH 24130)
绘图
-
在
Series.plot()
中,布尔值无法绘制的错误(GH 23719) -
在没有行时,
DataFrame.plot()
无法绘图的错误(GH 27758) -
DataFrame.plot()
在同一轴上绘制多个系列时,产生错误的图例标记(GH 18222) -
当
kind='box'
且数据包含日期时间或时间间隔数据时,DataFrame.plot()
中存在错误(这些类型现在会自动被忽略)(GH 22799) -
DataFrame.plot.line()
和DataFrame.plot.area()
在 x 轴上生成错误的 xlim(GH 27686,GH 25160,GH 24784) -
DataFrame.boxplot()
存在错误,不接受color
参数,就像DataFrame.plot.box()
一样(GH 26214) -
对于
DataFrame.plot.bar()
,忽略了xticks
参数的错误(GH 14119) -
当设置选项时,
set_option()
现在会验证提供给'plotting.backend'
的绘图后端是否在设置选项时实现了该后端,而不是在创建绘图时验证(GH 28163)。 -
DataFrame.plot()
现在允许使用backend
关键字参数在一个会话中更改后端(GH 28619)。 -
颜色验证中的错误漏报非颜色样式的错误(GH 29122)。
-
允许
DataFrame.plot.scatter()
绘制objects
和datetime
类型的数据(GH 18755, GH 30391)。 -
在使用
by
和子图时,DataFrame.hist()
中的xrot=0
无法正常工作(GH 30288)。
GroupBy/resample/rolling
-
当函数返回一个
Index
时,core.groupby.DataFrameGroupBy.apply()
中的一个组仅显示来自一个单一组的输出(GH 28652)。 -
当任何组包含所有 NA 值时,
DataFrame.groupby()
中具有多个组的 bug 会引发IndexError
(GH 20519)。 -
Resampler.size()
和Resampler.count()
在与空的Series
或DataFrame
结合使用时返回错误的 dtype(GH 28427)。 -
在
axis=1
时,DataFrame.rolling()
中不允许在日期时间上进行滚动(GH 28192)。 -
在
DataFrame.rolling()
中不允许在多级索引级别上滚动的错误(GH 15584)。 -
在 monotonic decreasing 时间索引上不允许滚动的错误 (GH 19248)。
-
当
axis=1
时,DataFrame.groupby()
不提供按列名选择的错误 (GH 27614) -
core.groupby.DataFrameGroupby.agg()
中的错误,无法使用带有命名聚合的 lambda 函数 (GH 27519) -
在用分类列分组时,
DataFrame.groupby()
丢失列名信息的错误 (GH 28787) -
在
DataFrame.groupby()
和Series.groupby()
中,由于重复输入函数而引发的错误已经被移除。以前,如果相同的函数应用于同一列,则会引发错误,现在只要新分配的名称不同,就允许使用。(GH 28426) -
core.groupby.SeriesGroupBy.value_counts()
将能够处理即使Grouper
生成空组的情况 (GH 28479) -
在 groupby 中使用时,
core.window.rolling.Rolling.quantile()
忽略interpolation
关键字参数的错误 (GH 28779) -
DataFrame.groupby()
中存在的错误,any
、all
、nunique
和 transform 函数会错误地处理重复的列标签(GH 21668) -
core.groupby.DataFrameGroupBy.agg()
中存在的 bug,带有时区感知的 datetime64 列错误地将结果转换为原始 dtype(GH 29641) -
DataFrame.groupby()
中存在的 bug,在使用 axis=1 并且具有单层列索引时出现问题(GH 30208) -
DataFrame.groupby()
中存在的 bug,在 axis=1 上使用 nunique 时出现问题(GH 30253) -
DataFrameGroupBy.quantile()
和SeriesGroupBy.quantile()
中存在的 bug,当有多个类似列表的 q 值和整数列名时会出现问题(GH 30289) -
DataFrameGroupBy.pct_change()
和SeriesGroupBy.pct_change()
中存在的 bug,在fill_method
为None
时导致TypeError
错误(GH 30463) -
Rolling.count()
和Expanding.count()
中存在的 bug,在忽略了min_periods
参数时出现问题(GH 26996)
重塑
-
DataFrame.apply()
中存在的 bug,导致空DataFrame
输出不正确(GH 28202, GH 21959) -
DataFrame.stack()
中存在的 bug,当创建 MultiIndex 时未正确处理非唯一索引(GH 28301) -
pivot_table()
中存在的 bug,在margins=True
且aggfunc='mean'
时未返回正确的float
类型(GH 24893) -
在
merge_asof()
中存在一个 bug,无法使用datetime.timedelta
作为tolerance
参数 (GH 28098) -
在
merge()
中存在一个 bug,当使用 MultiIndex 时,未能正确添加后缀(GH 28518) -
qcut()
和cut()
现在处理布尔输入 (GH 20303) -
修复确保在使用容差值时,所有 int dtype 都可以在
merge_asof()
中使用。之前,每个非 int64 类型都会引发错误的MergeError
(GH 28870). -
在
get_dummies()
中提供更好的错误消息,当columns
不是类似列表的值时(GH 28383) -
在
Index.join()
中存在一个 bug,导致不匹配的MultiIndex
名称顺序引发无限递归错误。 (GH 25760, GH 28956) -
在
Series.pct_change()
中存在一个 bug,提供一个锚定频率会引发ValueError
(GH 28664) -
在某些情况下,当两个 DataFrame 拥有相同的列但顺序不同时,
DataFrame.equals()
错误地返回 True 的 bug(GH 28839) -
在
DataFrame.replace()
中存在一个 bug,导致非数值替换值的 dtype 未被尊重(GH 26632) -
在
melt()
中存在一个 bug,当为id_vars
或value_vars
提供混合字符串和数值时,会错误地引发ValueError
(GH 29718) -
当转置一个每列都是相同扩展 dtype 的
DataFrame
时,现在会保留 dtype(GH 30091) -
在
merge_asof()
合并时,当left_index
为时区感知型且right_on
为时区感知型列时存在错误(GH 29864) -
在
cut()
和qcut()
中,当labels=True
时,改进了错误消息和文档字符串(GH 13318) -
在具有级别列表的
DataFrame.unstack()
中,缺少fill_na
参数时存在错误 (GH 30740)
稀疏
-
SparseDataFrame
中的算术操作存在错误,错误地将输入强制转换为浮点数 (GH 28107) -
在存在名为
sparse
的列时,DataFrame.sparse
返回Series
而不是访问器时存在错误 (GH 30758) -
修复了带有布尔型稀疏数组的
operator.xor()
。现在返回稀疏结果,而不是对象 dtype (GH 31025)
ExtensionArray
其他
-
尝试使用
set_option()
设置display.precision
、display.max_rows
或display.max_columns
为除了None
或正整数之外的任何值都会引发ValueError
(GH 23348) -
使用嵌套字典中的重叠键来调用
DataFrame.replace()
将不再引发错误,现在匹配扁平字典的行为 (GH 27660) -
现在,
DataFrame.to_csv()
和Series.to_csv()
支持将字典作为compression
参数,其中键'method'
是压缩方法,其他键是额外的压缩选项,当压缩方法为'zip'
时 (GH 26023) -
在
Series.diff()
中的错误,布尔系列将错误地引发TypeError
(GH 17294) -
当传递一个
Series
的元组时,Series.append()
不再引发TypeError
(GH 28410) -
在调用
pandas.libs._json.encode()
时出现错误的错误消息被修复,该错误消息在 0d 数组上调用时出现错误(GH 18878) -
在
DataFrame.query()
和DataFrame.eval()
中的反引号引用现在也可以用于使用无效标识符,比如以数字开头的名称、Python 关键字或使用单个字符操作符的情况(GH 27017) -
pd.core.util.hashing.hash_pandas_object
中的错误,包含元组的数组被错误地视为不可哈希(GH 28969) -
在使用空列表附加时引发
IndexError
的DataFrame.append()
中的错误被修复(GH 28769) -
修复
AbstractHolidayCalendar
在 2030 年后返回正确结果的问题(现在扩展到 2200 年)(GH 27790) -
修复了
IntegerArray
对除以0
的操作返回inf
而不是NaN
的问题(GH 27398) -
当另一个值为
0
或1
时,修复了pow
操作对IntegerArray
的影响(GH 29997) -
在启用
use_inf_as_na
时,Series.count()
引发异常(GH 29478) -
在
Index
中的错误,非可哈希名称可以设置而不引发TypeError
(GH 29069) -
在传递 2D
ndarray
和扩展 dtype 时,DataFrame
构造函数中的错误被修复(GH 12513) -
当提供了一个带有
dtype="string"
和na_rep
的系列时,在DataFrame.to_csv()
中的错误,na_rep
被截断为 2 个字符。 (GH 29975) -
DataFrame.itertuples()
的一个 bug,它会错误地确定是否可以使用命名元组来处理 255 列的数据帧(GH 28282) -
在
testing.assert_series_equal()
中处理嵌套的 NumPyobject
数组,用于 ExtensionArray 实现(GH 30841)
共有 308 人为此版本贡献了补丁。名字后面带有“+”的人第一次贡献了补丁。
-
Aaditya Panikath +
-
Abdullah İhsan Seçer
-
Abhijeet Krishnan +
-
Adam J. Stewart
-
Adam Klaum +
-
Addison Lynch
-
Aivengoe +
-
Alastair James +
-
Albert Villanova del Moral
-
Alex Kirko +
-
Alfredo Granja +
-
Allen Downey
-
Alp Arıbal +
-
Andreas Buhr +
-
Andrew Munch +
-
Andy
-
Angela Ambroz +
-
Aniruddha Bhattacharjee +
-
Ankit Dhankhar +
-
Antonio Andraues Jr +
-
Arda Kosar +
-
Asish Mahapatra +
-
Austin Hackett +
-
Avi Kelman +
-
AyowoleT +
-
Bas Nijholt +
-
Ben Thayer
-
Bharat Raghunathan
-
Bhavani Ravi
-
Bhuvana KA +
-
Big Head
-
Blake Hawkins +
-
Bobae Kim +
-
Brett Naul
-
Brian Wignall
-
Bruno P. Kinoshita +
-
Bryant Moscon +
-
Cesar H +
-
Chris Stadler
-
Chris Zimmerman +
-
Christopher Whelan
-
Clemens Brunner
-
Clemens Tolboom +
-
Connor Charles +
-
Daniel Hähnke +
-
Daniel Saxton
-
Darin Plutchok +
-
Dave Hughes
-
David Stansby
-
DavidRosen +
-
Dean +
-
Deepan Das +
-
Deepyaman Datta
-
DorAmram +
-
Dorothy Kabarozi +
-
Drew Heenan +
-
Eliza Mae Saret +
-
Elle +
-
Endre Mark Borza +
-
Eric Brassell +
-
Eric Wong +
-
Eunseop Jeong +
-
Eyden Villanueva +
-
Felix Divo
-
ForTimeBeing +
-
Francesco Truzzi +
-
Gabriel Corona +
-
Gabriel Monteiro +
-
Galuh Sahid +
-
Georgi Baychev +
-
Gina
-
GiuPassarelli +
-
Grigorios Giannakopoulos +
-
Guilherme Leite +
-
Guilherme Salomé +
-
Gyeongjae Choi +
-
Harshavardhan Bachina +
-
Harutaka Kawamura +
-
哈桑·基比里格
-
Hielke Walinga
-
Hubert
-
Hugh Kelley +
-
Ian Eaves +
-
Ignacio Santolin +
-
Igor Filippov +
-
Irv Lustig
-
Isaac Virshup +
-
Ivan Bessarabov +
-
JMBurley +
-
Jack Bicknell +
-
Jacob Buckheit +
-
Jan Koch
-
Jan Pipek +
-
Jan Škoda +
-
Jan-Philip Gehrcke
-
Jasper J.F. van den Bosch +
-
Javad +
-
Jeff Reback
-
Jeremy Schendel
-
Jeroen Kant +
-
Jesse Pardue +
-
Jethro Cao +
-
江越
-
Jiaxiang +
-
Jihyung Moon +
-
Jimmy Callin
-
Jinyang Zhou +
-
Joao Victor Martinelli +
-
Joaq Almirante +
-
John G Evans +
-
John Ward +
-
Jonathan Larkin +
-
Joris Van den Bossche
-
Josh Dimarsky +
-
Joshua Smith +
-
Josiah Baker +
-
Julia Signell +
-
Jung Dong Ho +
-
Justin Cole +
-
Justin Zheng
-
Kaiqi Dong
-
Karthigeyan +
-
Katherine Younglove +
-
Katrin Leinweber
-
Kee Chong Tan +
-
Keith Kraus +
-
Kevin Nguyen +
-
Kevin Sheppard
-
Kisekka David +
-
Koushik +
-
Kyle Boone +
-
Kyle McCahill +
-
Laura Collard,博士 +
-
LiuSeeker +
-
Louis Huynh +
-
Lucas Scarlato Astur +
-
Luiz Gustavo +
-
Luke +
-
Luke Shepard +
-
MKhalusova +
-
Mabel Villalba
-
Maciej J +
-
Mak Sze Chun
-
Manu NALEPA +
-
Marc
-
Marc Garcia
-
Marco Gorelli +
-
Marco Neumann +
-
Martin Winkel +
-
Martina G. Vilas +
-
Mateusz +
-
Matthew Roeschke
-
Matthew Tan +
-
Max Bolingbroke
-
Max Chen +
-
MeeseeksMachine
-
Miguel +
-
MinGyo Jung +
-
Mohamed Amine ZGHAL +
-
Mohit Anand +
-
MomIsBestFriend +
-
Naomi Bonnin +
-
Nathan Abel +
-
Nico Cernek +
-
Nigel Markey +
-
Noritada Kobayashi +
-
Oktay Sabak +
-
Oliver Hofkens +
-
Oluokun Adedayo +
-
Osman +
-
Oğuzhan Öğreden +
-
Pandas 开发团队 +
-
Patrik Hlobil +
-
Paul Lee +
-
Paul Siegel +
-
Petr Baev +
-
Pietro Battiston
-
Prakhar Pandey +
-
Puneeth K +
-
Raghav +
-
Rajat +
-
Rajhans Jadhao +
-
Rajiv Bharadwaj +
-
Rik-de-Kort +
-
Roei.r
-
Rohit Sanjay +
-
Ronan Lamy +
-
Roshni +
-
Roymprog +
-
Rushabh Vasani +
-
Ryan Grout +
-
Ryan Nazareth
-
Samesh Lakhotia +
-
Samuel Sinayoko
-
Samyak Jain +
-
Sarah Donehower +
-
Sarah Masud +
-
Saul Shanabrook +
-
Scott Cole +
-
SdgJlbl +
-
Seb +
-
Sergei Ivko +
-
Shadi Akiki
-
Shorokhov Sergey
-
Siddhesh Poyarekar +
-
Sidharthan Nair +
-
Simon Gibbons
-
Simon Hawkins
-
Simon-Martin Schröder +
-
Sofiane Mahiou +
-
Sourav kumar +
-
Souvik Mandal +
-
Soyoun Kim +
-
Sparkle Russell-Puleri +
-
Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి)
-
Stuart Berg +
-
Sumanau Sareen
-
Szymon Bednarek +
-
Tambe Tabitha Achere +
-
Tan Tran
-
Tang Heyi +
-
Tanmay Daripa +
-
Tanya Jain
-
Terji Petersen
-
Thomas Li +
-
Tirth Jain +
-
Tola A +
-
Tom Augspurger
-
Tommy Lynch +
-
Tomoyuki Suzuki +
-
Tony Lorenzo
-
Unprocessable +
-
Uwe L. Korn
-
Vaibhav Vishal
-
Victoria Zdanovskaya +
-
Vijayant +
-
Vishwak Srinivasan +
-
WANG Aiyong
-
Wenhuan
-
Wes McKinney
-
Will Ayd
-
Will Holmgren
-
William Ayd
-
William Blan +
-
Wouter Overmeire
-
Wuraola Oyewusi +
-
YaOzI +
-
Yash Shukla +
-
Yu Wang +
-
Yusei Tahara +
-
alexander135 +
-
alimcmaster1
-
avelineg +
-
bganglia +
-
bolkedebruin
-
bravech +
-
chinhwee +
-
cruzzoe +
-
dalgarno +
-
daniellebrown +
-
danielplawrence
-
est271 +
-
francisco souza +
-
ganevgv +
-
garanews +
-
gfyoung
-
h-vetinari
-
hasnain2808 +
-
ianzur +
-
jalbritt +
-
jbrockmendel
-
jeschwar +
-
jlamborn324 +
-
joy-rosie +
-
kernc
-
killerontherun1
-
krey +
-
lexy-lixinyu +
-
lucyleeow +
-
lukasbk +
-
maheshbapatu +
-
mck619 +
-
nathalier
-
naveenkaushik2504 +
-
nlepleux +
-
nrebena
-
ohad83 +
-
pilkibun
-
pqzx +
-
proost +
-
pv8493013j +
-
qudade +
-
rhstanton +
-
rmunjal29 +
-
sangarshanan +
-
sardonick +
-
saskakarsi +
-
shaido987 +
-
ssikdar1
-
steveayers124 +
-
tadashigaki +
-
timcera +
-
tlaytongoogle +
-
tobycheese
-
tonywu1999 +
-
tsvikas +
-
yogendrasoni +
-
zys5945 +
新的弃用政策
从 pandas 1.0.0 开始,pandas 将采用 SemVer 的一种变体来版本发布。简而言之,
-
弃用将在次要版本中引入(例如 1.1.0、1.2.0、2.1.0、...)
-
弃用政策将在主要版本发布时实施(例如 1.0.0、2.0.0、3.0.0、...)
-
API-breaking 变更仅会在主要版本中进行(除了实验性功能)
更多信息,请参阅版本政策。
功能增强
在rolling.apply
和expanding.apply
中使用 Numba
我们在apply()
和apply()
中添加了一个engine
关键字,允许用户使用Numba而不是 Cython 执行程序。如果 apply 函数可以操作 numpy 数组并且数据集较大(100 万行或更多),使用 Numba 引擎可以获得显着的性能提升。更多详情,请参阅滚动应用文档 (GH 28987, GH 30936) ### 定义滚动操作的自定义窗口
我们添加了一个pandas.api.indexers.BaseIndexer()
类,允许用户在rolling
操作期间定义窗口边界的生成方式。用户可以在pandas.api.indexers.BaseIndexer()
子类上定义自己的get_window_bounds
方法,该方法将为滚动聚合期间每个窗口生成的起始和结束索引。更多详情和示例用法,请参阅自定义窗口滚动文档 ### 转换为 Markdown
我们添加了to_markdown()
用于创建 Markdown 表格 (GH 11052)
In [1]: df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b'])
In [2]: print(df.to_markdown())
| | A | B |
|:---|----:|----:|
| a | 1 | 1 |
| a | 2 | 2 |
| b | 3 | 3 |
``` ### 在`rolling.apply`和`expanding.apply`中使用 Numba
我们在`apply()`和`apply()`中添加了一个`engine`关键字,允许用户使用[Numba](https://numba.pydata.org/)而不是 Cython 执行程序。如果 apply 函数可以操作 numpy 数组并且数据集较大(100 万行或更多),使用 Numba 引擎可以获得显着的性能提升。更多详情,请参阅滚动应用文档 ([GH 28987](https://github.com/pandas-dev/pandas/issues/28987), [GH 30936](https://github.com/pandas-dev/pandas/issues/30936))
### 定义滚动操作的自定义窗口
我们添加了一个允许用户定义在`rolling`操作期间如何创建窗口边界的`pandas.api.indexers.BaseIndexer()`类。用户可以在`pandas.api.indexers.BaseIndexer()`子类上定义自己的`get_window_bounds`方法,该方法将为滚动聚合期间使用的每个窗口生成起始和结束索引。有关更多详细信息和示例用法,请参阅自定义窗口滚动文档
### 转换为 Markdown
我们添加了`to_markdown()`用于创建 Markdown 表格 ([GH 11052](https://github.com/pandas-dev/pandas/issues/11052))
```py
In [1]: df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b'])
In [2]: print(df.to_markdown())
| | A | B |
|:---|----:|----:|
| a | 1 | 1 |
| a | 2 | 2 |
| b | 3 | 3 |
实验性的新特性
实验性的NA
标量表示缺失值
引入了一个新的pd.NA
值(单例),用于表示标量缺失值。到目前为止,pandas 使用了几个值来表示缺失数据:np.nan
用于浮点数据,np.nan
或 None
用于 object 数据类型,pd.NaT
用于类似日期时间的数据。pd.NA
的目标是提供一种可以跨数据类型一致使用的“缺失”指示器。pd.NA
目前由可空整数和布尔数据类型以及新的字符串数据类型使用 (GH 28095)。
警告
实验性:pd.NA
的行为仍可能在没有警告的情况下更改。
例如,使用可空整数数据类型创建一个 Series:
In [3]: s = pd.Series([1, 2, None], dtype="Int64")
In [4]: s
Out[4]:
0 1
1 2
2 <NA>
dtype: Int64
In [5]: s[2]
Out[5]: <NA>
与np.nan
相比,pd.NA
在某些操作中的行为不同。除了算术操作外,pd.NA
在比较操作中还会传播为“缺失”或“未知”:
In [6]: np.nan > 1
Out[6]: False
In [7]: pd.NA > 1
Out[7]: <NA>
对于逻辑操作,pd.NA
遵循三值逻辑(或Kleene 逻辑)的规则。例如:
In [8]: pd.NA | True
Out[8]: True
欲了解更多,请参阅 NA 部分中有关缺失数据的用户指南。### 专用字符串数据类型
我们添加了StringDtype
,一个专门用于字符串数据的扩展类型。以前,字符串通常存储在 object 数据类型的 NumPy 数组中。(GH 29975)
警告
StringDtype
目前被视为实验性的。实现和部分 API 可能会在没有警告的情况下更改。
'string'
扩展类型解决了 object 数据类型 NumPy 数组的几个问题:
-
在
object
数据类型的数组中,你可能会意外地存储字符串和非字符串的混合体。而StringArray
只能存储字符串。 -
object
dtype 破坏了特定于 dtype 的操作,例如DataFrame.select_dtypes()
。没有明确的方法可以仅选择文本而排除非文本但仍为 object-dtype 列。 -
当阅读代码时,
object
dtype 数组的内容不如string
清晰。
In [9]: pd.Series(['abc', None, 'def'], dtype=pd.StringDtype())
Out[9]:
0 abc
1 <NA>
2 def
dtype: string
您也可以使用别名"string"
。
In [10]: s = pd.Series(['abc', None, 'def'], dtype="string")
In [11]: s
Out[11]:
0 abc
1 <NA>
2 def
dtype: string
常规的字符串访问器方法可用。在适当的情况下,DataFrame 的 Series 或列的返回类型也将具有字符串 dtype。
In [12]: s.str.upper()
Out[12]:
0 ABC
1 <NA>
2 DEF
dtype: string
In [13]: s.str.split('b', expand=True).dtypes
Out[13]:
0 string[python]
1 string[python]
dtype: object
返回整数的字符串访问器方法将返回一个具有Int64Dtype
的值
In [14]: s.str.count("a")
Out[14]:
0 1
1 <NA>
2 0
dtype: Int64
我们建议在处理字符串时明确使用string
数据类型。有关更多信息,请参见 Text data types。### 支持带有缺失值的布尔数据类型
我们增加了BooleanDtype
/ BooleanArray
,一个专门用于布尔数据的扩展类型,可以容纳缺失值。默认的基于 bool-dtype NumPy 数组的bool
数据类型,列只能保存True
或False
,而不能保存缺失值。这个新的BooleanArray
也可以通过在一个单独的掩码中跟踪来存储缺失值。 (GH 29555, GH 30095, GH 31131)
In [15]: pd.Series([True, False, None], dtype=pd.BooleanDtype())
Out[15]:
0 True
1 False
2 <NA>
dtype: boolean
您也可以使用别名"boolean"
。
In [16]: s = pd.Series([True, False, None], dtype="boolean")
In [17]: s
Out[17]:
0 True
1 False
2 <NA>
dtype: boolean
```### 方法`convert_dtypes`以便于使用支持的扩展数据类型
为了鼓励使用支持`pd.NA`的扩展数据类型`StringDtype`、`BooleanDtype`、`Int64Dtype`、`Int32Dtype`等,引入了`DataFrame.convert_dtypes()`和`Series.convert_dtypes()`方法。 ([GH 29752](https://github.com/pandas-dev/pandas/issues/29752)) ([GH 30929](https://github.com/pandas-dev/pandas/issues/30929))
示例:
```py
In [18]: df = pd.DataFrame({'x': ['abc', None, 'def'],
....: 'y': [1, 2, np.nan],
....: 'z': [True, False, True]})
....:
In [19]: df
Out[19]:
x y z
0 abc 1.0 True
1 None 2.0 False
2 def NaN True
In [20]: df.dtypes
Out[20]:
x object
y float64
z bool
dtype: object
In [21]: converted = df.convert_dtypes()
In [22]: converted
Out[22]:
x y z
0 abc 1 True
1 <NA> 2 False
2 def <NA> True
In [23]: converted.dtypes
Out[23]:
x string[python]
y Int64
z boolean
dtype: object
这在使用诸如read_csv()
和read_excel()
等读取器读取数据后尤其有用。有关说明,请参见这里。### 实验性NA
标量表示缺失值
引入了一个新的pd.NA
值(单例)来表示标量缺失值。到目前为止,pandas 使用了几个值来表示缺失数据:np.nan
用于浮点数据,np.nan
或None
用于对象类型数据,pd.NaT
用于类似日期时间的数据。pd.NA
的目标是提供一个可以在各种数据类型中一致使用的“缺失”指示器。pd.NA
目前被可空整数和布尔数据类型以及新的字符串数据类型使用(GH 28095)。
警告
实验性质:pd.NA
的行为仍可能在没有警告的情况下发生变化。
例如,使用可空整数数据类型创建一个 Series:
In [3]: s = pd.Series([1, 2, None], dtype="Int64")
In [4]: s
Out[4]:
0 1
1 2
2 <NA>
dtype: Int64
In [5]: s[2]
Out[5]: <NA>
与np.nan
相比,pd.NA
在某些操作中的行为不同。除了算术操作外,pd.NA
在比较操作中也会传播为“缺失”或“未知”:
In [6]: np.nan > 1
Out[6]: False
In [7]: pd.NA > 1
Out[7]: <NA>
对于逻辑操作,pd.NA
遵循三值逻辑(或Kleene 逻辑)的规则。例如:
In [8]: pd.NA | True
Out[8]: True
欲了解更多,请参阅 NA 部分中关于缺失数据的用户指南。
专用字符串数据类型
我们添加了StringDtype
,这是专门用于字符串数据的扩展类型。以前,字符串通常存储在对象类型的 NumPy 数组中。(GH 29975)
警告
StringDtype
目前被视为实验性质。实现和部分 API 可能会在没有警告的情况下发生变化。
'string'
扩展类型解决了对象类型 NumPy 数组的几个问题:
-
你可能会在对象类型数组中意外存储混合的字符串和非字符串。
StringArray
只能存储字符串。 -
object
数据类型会破坏特定于数据类型的操作,比如DataFrame.select_dtypes()
。没有明确的方法可以仅选择文本而排除非文本,但仍然是对象类型的列。 -
在阅读代码时,对象类型数组的内容不如
string
清晰。
In [9]: pd.Series(['abc', None, 'def'], dtype=pd.StringDtype())
Out[9]:
0 abc
1 <NA>
2 def
dtype: string
你也可以使用别名"string"
。
In [10]: s = pd.Series(['abc', None, 'def'], dtype="string")
In [11]: s
Out[11]:
0 abc
1 <NA>
2 def
dtype: string
常用的字符串访问方法有效。在适当的情况下,DataFrame 的 Series 或列的返回类型也将具有字符串数据类型。
In [12]: s.str.upper()
Out[12]:
0 ABC
1 <NA>
2 DEF
dtype: string
In [13]: s.str.split('b', expand=True).dtypes
Out[13]:
0 string[python]
1 string[python]
dtype: object
返回整数的字符串访问方法将返回一个带有Int64Dtype
的值
In [14]: s.str.count("a")
Out[14]:
0 1
1 <NA>
2 0
dtype: Int64
我们建议在处理字符串时明确使用string
数据类型。更多信息请参阅文本数据类型。
支持带有缺失值的布尔数据类型
我们添加了BooleanDtype
/ BooleanArray
,这是一个专门用于布尔数据的扩展类型,可以存储缺失值。默认的bool
数据类型基于布尔类型的 NumPy 数组,该列只能保存True
或False
,而不能是缺失值。这个新的BooleanArray
也可以通过在单独的掩码中跟踪这些值来存储缺失值。(GH 29555, GH 30095, GH 31131)
In [15]: pd.Series([True, False, None], dtype=pd.BooleanDtype())
Out[15]:
0 True
1 False
2 <NA>
dtype: boolean
你也可以使用别名"boolean"
。
In [16]: s = pd.Series([True, False, None], dtype="boolean")
In [17]: s
Out[17]:
0 True
1 False
2 <NA>
dtype: boolean
convert_dtypes
方法简化了对支持的扩展数据类型的使用
为了鼓励使用支持pd.NA
的扩展数据类型StringDtype
、BooleanDtype
、Int64Dtype
、Int32Dtype
等,引入了DataFrame.convert_dtypes()
和Series.convert_dtypes()
方法。(GH 29752) (GH 30929)
例如:
In [18]: df = pd.DataFrame({'x': ['abc', None, 'def'],
....: 'y': [1, 2, np.nan],
....: 'z': [True, False, True]})
....:
In [19]: df
Out[19]:
x y z
0 abc 1.0 True
1 None 2.0 False
2 def NaN True
In [20]: df.dtypes
Out[20]:
x object
y float64
z bool
dtype: object
In [21]: converted = df.convert_dtypes()
In [22]: converted
Out[22]:
x y z
0 abc 1 True
1 <NA> 2 False
2 def <NA> True
In [23]: converted.dtypes
Out[23]:
x string[python]
y Int64
z boolean
dtype: object
在使用类似read_csv()
和read_excel()
这样的读取器读取数据后,这尤其有用。请参阅此处了解详细描述。
其他增强功能
-
DataFrame.to_string()
添加了max_colwidth
参数,用于控制何时截断宽列(GH 9784) -
将
na_value
参数添加到Series.to_numpy()
、Index.to_numpy()
和DataFrame.to_numpy()
,以控制用于缺失数据的值(GH 30322) -
MultiIndex.from_product()
如果未明确提供,则从输入中推断级别名称(GH 27292) -
DataFrame.to_latex()
现在接受caption
和label
参数(GH 25436) -
具有可空整数、新字符串数据类型和周期数据类型的数据帧现在可以转换为
pyarrow
(>=0.15.0),这意味着在使用pyarrow
引擎时支持写入 Parquet 文件格式(GH 28368)。完整的 Parquet 往返(写入并使用to_parquet()
/read_parquet()
读取)从 pyarrow >= 0.16 开始支持(GH 20612)。 -
to_parquet()
现在适当地处理了pyarrow
引擎中用户定义模式的schema
参数。(GH 30270) -
DataFrame.to_json()
现在接受一个indent
整数参数,以启用 JSON 输出的漂亮打印(GH 12004) -
read_stata()
现在可以读取 Stata 119 dta 文件。(GH 28250) -
实现了
Window.var()
和Window.std()
函数(GH 26597) -
对于非 ASCII 文本,
DataFrame.to_string()
现在增加了encoding
参数(GH 28766) -
对于非 ASCII 文本,
DataFrame.to_html()
现在增加了encoding
参数(GH 28663) -
Styler.background_gradient()
现在接受vmin
和vmax
参数(GH 12145) -
Styler.format()
现在添加了na_rep
参数,以帮助格式化缺失值(GH 21527,GH 28358) -
read_excel()
现在可以通过传递engine='pyxlsb'
来读取二进制 Excel(.xlsb
)文件。有关更多详情和示例用法,请参阅二进制 Excel 文件文档。关闭 GH 8540。 -
在
DataFrame.to_parquet()
中,partition_cols
参数现在接受一个字符串(GH 27117) -
pandas.read_json()
现在解析NaN
、Infinity
和-Infinity
(GH 12213) -
DataFrame 构造函数保留了与
ExtensionArray
的dtype
相同的ExtensionArray
(GH 11363) -
DataFrame.sort_values()
和Series.sort_values()
现在具有ignore_index
关键字以在排序后重置索引(GH 30114) -
DataFrame.sort_index()
和Series.sort_index()
现在具有ignore_index
关键字来重置索引(GH 30114) -
DataFrame.drop_duplicates()
现在具有ignore_index
关键字来重置索引(GH 30114) -
添加了一个新的写入器用于导出版本为 118 和 119 的 Stata dta 文件,
StataWriterUTF8
。这些文件格式支持导出包含 Unicode 字符的字符串。格式 119 支持具有超过 32,767 个变量的数据集(GH 23573, GH 30959) -
Series.map()
现在接受collections.abc.Mapping
子类作为映射器(GH 29733) -
添加了一个实验性的
attrs
来存储关于数据集的全局元数据(GH 29062) -
Timestamp.fromisocalendar()
现在兼容 Python 3.8 及以上版本(GH 28115) -
DataFrame.to_pickle()
和read_pickle()
现在接受 URL(GH 30163)
向后不兼容的 API 更改
避免使用来自MultiIndex.levels
的名称
作为对MultiIndex
的较大重构的一部分,级别名称现在与级别分开存储(GH 27242)。我们建议使用MultiIndex.names
来访问名称,并使用Index.set_names()
来更新名称。
为了向后兼容,您仍然可以通过 levels 访问名称。
In [24]: mi = pd.MultiIndex.from_product([[1, 2], ['a', 'b']], names=['x', 'y'])
In [25]: mi.levels[0].name
Out[25]: 'x'
然而,不再可以通过级别更新MultiIndex
的名称。
In [26]: mi.levels[0].name = "new name"
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
Cell In[26], line 1
----> 1 mi.levels[0].name = "new name"
File ~/work/pandas/pandas/pandas/core/indexes/base.py:1690, in Index.name(self, value)
1686 @name.setter
1687 def name(self, value: Hashable) -> None:
1688 if self._no_setting_name:
1689 # Used in MultiIndex.levels to avoid silently ignoring name updates.
-> 1690 raise RuntimeError(
1691 "Cannot set name on a level of a MultiIndex. Use "
1692 "'MultiIndex.set_names' instead."
1693 )
1694 maybe_extract_name(value, None, type(self))
1695 self._name = value
RuntimeError: Cannot set name on a level of a MultiIndex. Use 'MultiIndex.set_names' instead.
In [27]: mi.names
Out[27]: FrozenList(['x', 'y'])
要更新,请使用MultiIndex.set_names
,它将返回一个新的MultiIndex
。
In [28]: mi2 = mi.set_names("new name", level=0)
In [29]: mi2.names
Out[29]: FrozenList(['new name', 'y'])
IntervalArray
的新 repr。
pandas.arrays.IntervalArray
采用了一个新的__repr__
,与其他数组类一致(GH 25022)
pandas 0.25.x
In [1]: pd.arrays.IntervalArray.from_tuples([(0, 1), (2, 3)])
Out[2]:
IntervalArray([(0, 1], (2, 3]],
closed='right',
dtype='interval[int64]')
pandas 1.0.0
In [30]: pd.arrays.IntervalArray.from_tuples([(0, 1), (2, 3)])
Out[30]:
<IntervalArray>
[(0, 1], (2, 3]]
Length: 2, dtype: interval[int64, right]
DataFrame.rename
现在只接受一个位置参数
DataFrame.rename()
以前接受会导致模糊或未定义行为的位置参数。从 pandas 1.0 开始,只允许通过位置传递第一个参数,该参数将标签映射到它们在默认轴上的新名称(GH 29136)。
pandas 0.25.x
In [1]: df = pd.DataFrame([[1]])
In [2]: df.rename({0: 1}, {0: 2})
Out[2]:
FutureWarning: ...Use named arguments to resolve ambiguity...
2
1 1
pandas 1.0.0
In [3]: df.rename({0: 1}, {0: 2})
Traceback (most recent call last):
...
TypeError: rename() takes from 1 to 2 positional arguments but 3 were given
现在提供了错误提示,当提供冲突或潜在模糊的参数时会引发错误。
pandas 0.25.x
In [4]: df.rename({0: 1}, index={0: 2})
Out[4]:
0
1 1
In [5]: df.rename(mapper={0: 1}, index={0: 2})
Out[5]:
0
2 1
pandas 1.0.0
In [6]: df.rename({0: 1}, index={0: 2})
Traceback (most recent call last):
...
TypeError: Cannot specify both 'mapper' and any of 'index' or 'columns'
In [7]: df.rename(mapper={0: 1}, index={0: 2})
Traceback (most recent call last):
...
TypeError: Cannot specify both 'mapper' and any of 'index' or 'columns'
您仍然可以通过提供axis
关键字参数来更改应用第一个位置参数的轴。
In [31]: df.rename({0: 1})
Out[31]:
0
1 1
In [32]: df.rename({0: 1}, axis=1)
Out[32]:
1
0 1
如果您想要更新索引和列标签,请确保使用相应的关键字。
In [33]: df.rename(index={0: 1}, columns={0: 2})
Out[33]:
2
1 1
为DataFrame
扩展了详细信息输出
DataFrame.info()
现在显示列摘要的行号(GH 17304)
pandas 0.25.x
In [1]: df = pd.DataFrame({"int_col": [1, 2, 3],
... "text_col": ["a", "b", "c"],
... "float_col": [0.0, 0.1, 0.2]})
In [2]: df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
int_col 3 non-null int64
text_col 3 non-null object
float_col 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 152.0+ bytes
pandas 1.0.0
In [34]: df = pd.DataFrame({"int_col": [1, 2, 3],
....: "text_col": ["a", "b", "c"],
....: "float_col": [0.0, 0.1, 0.2]})
....:
In [35]: df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 int_col 3 non-null int64
1 text_col 3 non-null object
2 float_col 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes
pandas.array()
推断变化
在几种情况下,pandas.array()
现在推断出 pandas 的新扩展类型(GH 29791):
-
字符串数据(包括缺失值)现在返回
arrays.StringArray
。 -
整数数据(包括缺失值)现在返回
arrays.IntegerArray
。 -
布尔数据(包括缺失值)现在返回新的
arrays.BooleanArray
。
pandas 0.25.x
In [1]: pd.array(["a", None])
Out[1]:
<PandasArray>
['a', None]
Length: 2, dtype: object
In [2]: pd.array([1, None])
Out[2]:
<PandasArray>
[1, None]
Length: 2, dtype: object
pandas 1.0.0
In [36]: pd.array(["a", None])
Out[36]:
<StringArray>
['a', <NA>]
Length: 2, dtype: string
In [37]: pd.array([1, None])
Out[37]:
<IntegerArray>
[1, <NA>]
Length: 2, dtype: Int64
作为提醒,您可以指定dtype
以禁用所有推断。
arrays.IntegerArray
现在使用pandas.NA
arrays.IntegerArray
现在使用pandas.NA
而不是numpy.nan
作为其缺失值标记(GH 29964)。
pandas 0.25.x
In [1]: a = pd.array([1, 2, None], dtype="Int64")
In [2]: a
Out[2]:
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64
In [3]: a[2]
Out[3]:
nan
pandas 1.0.0
In [38]: a = pd.array([1, 2, None], dtype="Int64")
In [39]: a
Out[39]:
<IntegerArray>
[1, 2, <NA>]
Length: 3, dtype: Int64
In [40]: a[2]
Out[40]: <NA>
这会有一些破坏 API 的后果。
转换为 NumPy ndarray
当转换为 NumPy 数组时,缺失值将是pd.NA
,不能转换为浮点数。因此,调用np.asarray(integer_array, dtype="float")
现在会引发异常。
pandas 0.25.x
In [1]: np.asarray(a, dtype="float")
Out[1]:
array([ 1., 2., nan])
pandas 1.0.0
In [41]: np.asarray(a, dtype="float")
Out[41]: array([ 1., 2., nan])
使用带有显式na_value
的arrays.IntegerArray.to_numpy()
。
In [42]: a.to_numpy(dtype="float", na_value=np.nan)
Out[42]: array([ 1., 2., nan])
缩减操作可能返回pd.NA
在执行诸如带有skipna=False
的求和等缩减操作时,在存在缺失值时,结果现在将是pd.NA
而不是np.nan
(GH 30958)。
pandas 0.25.x
In [1]: pd.Series(a).sum(skipna=False)
Out[1]:
nan
pandas 1.0.0
In [43]: pd.Series(a).sum(skipna=False)
Out[43]: <NA>
value_counts 返回可空整数 dtype
带有可空整数 dtype 的Series.value_counts()
现在为值返回可空整数 dtype。
pandas 0.25.x
In [1]: pd.Series([2, 1, 1, None], dtype="Int64").value_counts().dtype
Out[1]:
dtype('int64')
pandas 1.0.0
In [44]: pd.Series([2, 1, 1, None], dtype="Int64").value_counts().dtype
Out[44]: Int64Dtype()
更多关于pandas.NA
和numpy.nan
之间差异的信息,请参阅 NA 语义。
arrays.IntegerArray
比较返回arrays.BooleanArray
在arrays.IntegerArray
上的比较操作现在返回一个arrays.BooleanArray
而不是一个 NumPy 数组(GH 29964)。
pandas 0.25.x
In [1]: a = pd.array([1, 2, None], dtype="Int64")
In [2]: a
Out[2]:
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64
In [3]: a > 1
Out[3]:
array([False, True, False])
pandas 1.0.0
In [45]: a = pd.array([1, 2, None], dtype="Int64")
In [46]: a > 1
Out[46]:
<BooleanArray>
[False, True, <NA>]
Length: 3, dtype: boolean
请注意,现在缺失值会传播,而不像numpy.nan
那样总是比较不相等。更多信息请参见 NA 语义。
默认情况下,Categorical.min()
现在返回最小值而不是 np.nan
当Categorical
包含np.nan
时,默认情况下Categorical.min()
不再返回np.nan
(skipna=True)(GH 25303)
pandas 0.25.x
In [1]: pd.Categorical([1, 2, np.nan], ordered=True).min()
Out[1]: nan
pandas 1.0.0
In [47]: pd.Categorical([1, 2, np.nan], ordered=True).min()
Out[47]: 1
空的pandas.Series
的默认数据类型
在不指定数据类型的情况下初始化空的pandas.Series
现在会引发DeprecationWarning
(GH 17261)。默认数据类型将在未来版本中从float64
更改为object
,以使其与DataFrame
和Index
的行为保持一致。
pandas 1.0.0
In [1]: pd.Series()
Out[2]:
DeprecationWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
Series([], dtype: float64)
聚合操作的结果数据类型推断变化
在DataFrame.resample()
聚合中,结果数据类型的规则已经针对扩展类型发生了变化(GH 31359)。以前,pandas 会尝试将结果转换回原始数据类型,如果不可能,则退回到通常的推断规则。现在,只有当结果中的标量值是扩展数据类型的标量类型的实例时,pandas 才会返回原始数据类型的结果。
In [48]: df = pd.DataFrame({"A": ['a', 'b']}, dtype='category',
....: index=pd.date_range('2000', periods=2))
....:
In [49]: df
Out[49]:
A
2000-01-01 a
2000-01-02 b
pandas 0.25.x
In [1]> df.resample("2D").agg(lambda x: 'a').A.dtype
Out[1]:
CategoricalDtype(categories=['a', 'b'], ordered=False)
pandas 1.0.0
In [50]: df.resample("2D").agg(lambda x: 'a').A.dtype
Out[50]: CategoricalDtype(categories=['a', 'b'], ordered=False, categories_dtype=object)
这修复了resample
和groupby
之间的不一致性。这也修复了一个潜在的 bug,即结果的值可能会根据将结果转换回原始数据类型的方式而改变。
pandas 0.25.x
In [1] df.resample("2D").agg(lambda x: 'c')
Out[1]:
A
0 NaN
pandas 1.0.0
In [51]: df.resample("2D").agg(lambda x: 'c')
Out[51]:
A
2000-01-01 c
Python 的最低版本提升
pandas 1.0.0 支持 Python 3.6.1 及更高版本(GH 29212)。 ### 依赖项的最低版本提升
一些依赖项的最低支持版本已更新(GH 29766, GH 29723)。如果已安装,我们现在要求:
包名 | 最低版本 | 必需 | 更改 |
---|---|---|---|
numpy | 1.13.3 | X | |
pytz | 2015.4 | X | |
python-dateutil | 2.6.1 | X | |
bottleneck | 1.2.1 | ||
numexpr | 2.6.2 | ||
pytest(开发) | 4.0.2 |
对于 可选库,一般建议使用最新版本。以下表格列出了在 pandas 开发过程中当前正在测试的每个库的最低版本。最低测试版本以下的可选库可能仍然可用,但不被视为受支持的。
包 | 最低版本 | 已更改 |
---|---|---|
beautifulsoup4 | 4.6.0 | |
fastparquet | 0.3.2 | X |
gcsfs | 0.2.2 | |
lxml | 3.8.0 | |
matplotlib | 2.2.2 | |
numba | 0.46.0 | X |
openpyxl | 2.5.7 | X |
pyarrow | 0.13.0 | X |
pymysql | 0.7.1 | |
pytables | 3.4.2 | |
s3fs | 0.3.0 | X |
scipy | 0.19.0 | |
sqlalchemy | 1.1.4 | |
xarray | 0.8.2 | |
xlrd | 1.1.0 | |
xlsxwriter | 0.9.8 | |
xlwt | 1.2.0 |
查看 依赖项 和 可选依赖项 以获取更多信息。
构建更改
pandas 添加了 pyproject.toml 文件,并且不再在上传到 PyPI 的源分发包中包含 Cython 编译过的文件(GH 28341,GH 20775)。如果您正在安装构建好的分发包(wheel)或通过 conda 安装,这对您不会有任何影响。如果您从源代码构建 pandas,则在调用 pip install pandas
之前,您不再需要在构建环境中安装 Cython。
其他 API 更改
-
DataFrameGroupBy.transform()
和SeriesGroupBy.transform()
现在在无效的操作名称上引发错误(GH 27489) -
pandas.api.types.infer_dtype()
现在将返回“integer-na”作为整数和np.nan
混合的类型(GH 27283) -
MultiIndex.from_arrays()
现在不会从数组中推断名称,如果明确提供了names=None
,则不再推断(GH 27292) -
为了改善 tab 补全,pandas 在使用
dir
对 pandas 对象进行内省时不包括大多数已弃用的属性(例如dir(df)
)。要查看排除了哪些属性,请参见对象的_deprecations
属性,例如pd.DataFrame._deprecations
(GH 28805)。 -
unique()
的返回 dtype 现在与输入 dtype 匹配了(GH 27874)。 -
将
options.matplotlib.register_converters
的默认配置值从True
更改为"auto"
(GH 18720)。现在,pandas 自定义格式化程序只会应用于通过plot()
创建的绘图。以前,pandas 的格式化程序会应用于所有在plot()
之后创建的绘图。更多信息,请参阅单位注册。 -
Series.dropna()
已删除其**kwargs
参数,改为使用单个how
参数。以前提供给**kwargs
的除了how
之外的任何内容都会引发TypeError
(GH 29388)。 -
在测试 pandas 时,pytest 的新最低要求版本为 5.0.1(GH 29664)。
-
Series.str.__iter__()
已弃用,将在将来的版本中删除(GH 28277)。 -
在
read_csv()
的默认 NA 值列表中添加了<NA>
(GH 30821)。### 文档改进 -
增加了关于大型数据集的扩展的新章节(GH 28315)。
-
增加了关于 HDF5 数据集的查询多索引的子节(GH 28791)。### 避免使用
MultiIndex.levels
中的名称
作为对MultiIndex
进行较大重构的一部分,level 名称现在与 levels 分开存储了(GH 27242)。我们建议使用MultiIndex.names
来访问名称,并使用Index.set_names()
来更新名称。
为了向后兼容,你仍然可以通过 levels 访问名称。
In [24]: mi = pd.MultiIndex.from_product([[1, 2], ['a', 'b']], names=['x', 'y'])
In [25]: mi.levels[0].name
Out[25]: 'x'
然而,不再能通过级别 更新 MultiIndex
的名称。
In [26]: mi.levels[0].name = "new name"
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
Cell In[26], line 1
----> 1 mi.levels[0].name = "new name"
File ~/work/pandas/pandas/pandas/core/indexes/base.py:1690, in Index.name(self, value)
1686 @name.setter
1687 def name(self, value: Hashable) -> None:
1688 if self._no_setting_name:
1689 # Used in MultiIndex.levels to avoid silently ignoring name updates.
-> 1690 raise RuntimeError(
1691 "Cannot set name on a level of a MultiIndex. Use "
1692 "'MultiIndex.set_names' instead."
1693 )
1694 maybe_extract_name(value, None, type(self))
1695 self._name = value
RuntimeError: Cannot set name on a level of a MultiIndex. Use 'MultiIndex.set_names' instead.
In [27]: mi.names
Out[27]: FrozenList(['x', 'y'])
要进行更新,请使用 MultiIndex.set_names
,它会返回一个新的 MultiIndex
。
In [28]: mi2 = mi.set_names("new name", level=0)
In [29]: mi2.names
Out[29]: FrozenList(['new name', 'y'])
IntervalArray
的新 repr。
pandas.arrays.IntervalArray
采用了新的 __repr__
,与其他数组类相符 (GH 25022)。
pandas 0.25.x
In [1]: pd.arrays.IntervalArray.from_tuples([(0, 1), (2, 3)])
Out[2]:
IntervalArray([(0, 1], (2, 3]],
closed='right',
dtype='interval[int64]')
pandas 1.0.0
In [30]: pd.arrays.IntervalArray.from_tuples([(0, 1), (2, 3)])
Out[30]:
<IntervalArray>
[(0, 1], (2, 3]]
Length: 2, dtype: interval[int64, right]
DataFrame.rename
现在只接受一个位置参数。
DataFrame.rename()
以前接受位置参数,可能导致歧义或未定义的行为。从 pandas 1.0 开始,只有第一个参数可以按位置传递,该参数沿默认轴将标签映射到它们的新名称 (GH 29136)。
pandas 0.25.x
In [1]: df = pd.DataFrame([[1]])
In [2]: df.rename({0: 1}, {0: 2})
Out[2]:
FutureWarning: ...Use named arguments to resolve ambiguity...
2
1 1
pandas 1.0.0
In [3]: df.rename({0: 1}, {0: 2})
Traceback (most recent call last):
...
TypeError: rename() takes from 1 to 2 positional arguments but 3 were given
请注意,当提供冲突或可能引起歧义的参数时,现在会引发错误。
pandas 0.25.x
In [4]: df.rename({0: 1}, index={0: 2})
Out[4]:
0
1 1
In [5]: df.rename(mapper={0: 1}, index={0: 2})
Out[5]:
0
2 1
pandas 1.0.0
In [6]: df.rename({0: 1}, index={0: 2})
Traceback (most recent call last):
...
TypeError: Cannot specify both 'mapper' and any of 'index' or 'columns'
In [7]: df.rename(mapper={0: 1}, index={0: 2})
Traceback (most recent call last):
...
TypeError: Cannot specify both 'mapper' and any of 'index' or 'columns'
仍然可以通过提供 axis
关键字参数来更改应用第一个位置参数的轴。
In [31]: df.rename({0: 1})
Out[31]:
0
1 1
In [32]: df.rename({0: 1}, axis=1)
Out[32]:
1
0 1
如果要同时更新索引和列标签,请务必使用相应的关键字。
In [33]: df.rename(index={0: 1}, columns={0: 2})
Out[33]:
2
1 1
对于 DataFrame
的扩展详细信息输出。
DataFrame.info()
现在显示列摘要的行号 (GH 17304)。
pandas 0.25.x
In [1]: df = pd.DataFrame({"int_col": [1, 2, 3],
... "text_col": ["a", "b", "c"],
... "float_col": [0.0, 0.1, 0.2]})
In [2]: df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
int_col 3 non-null int64
text_col 3 non-null object
float_col 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 152.0+ bytes
pandas 1.0.0
In [34]: df = pd.DataFrame({"int_col": [1, 2, 3],
....: "text_col": ["a", "b", "c"],
....: "float_col": [0.0, 0.1, 0.2]})
....:
In [35]: df.info(verbose=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 int_col 3 non-null int64
1 text_col 3 non-null object
2 float_col 3 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 200.0+ bytes
pandas.array()
推断变更。
pandas.array()
现在在几种情况下推断 pandas 的新扩展类型 (GH 29791):
-
字符串数据(包括缺失值)现在返回
arrays.StringArray
。 -
整数数据(包括缺失值)现在返回
arrays.IntegerArray
。 -
布尔数据(包括缺失值)现在返回新的
arrays.BooleanArray
。
pandas 0.25.x
In [1]: pd.array(["a", None])
Out[1]:
<PandasArray>
['a', None]
Length: 2, dtype: object
In [2]: pd.array([1, None])
Out[2]:
<PandasArray>
[1, None]
Length: 2, dtype: object
pandas 1.0.0
In [36]: pd.array(["a", None])
Out[36]:
<StringArray>
['a', <NA>]
Length: 2, dtype: string
In [37]: pd.array([1, None])
Out[37]:
<IntegerArray>
[1, <NA>]
Length: 2, dtype: Int64
提醒一下,您可以指定 dtype
以禁用所有推断。
arrays.IntegerArray
现在使用pandas.NA
。
arrays.IntegerArray
现在使用pandas.NA
而不是numpy.nan
作为其缺失值标记(GH 29964)。
pandas 0.25.x
In [1]: a = pd.array([1, 2, None], dtype="Int64")
In [2]: a
Out[2]:
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64
In [3]: a[2]
Out[3]:
nan
pandas 1.0.0
In [38]: a = pd.array([1, 2, None], dtype="Int64")
In [39]: a
Out[39]:
<IntegerArray>
[1, 2, <NA>]
Length: 3, dtype: Int64
In [40]: a[2]
Out[40]: <NA>
这会产生一些 API 破坏的后果。
转换为 NumPy 数组
当转换为 NumPy 数组时,缺失值将是pd.NA
,无法转换为浮点数。因此,调用np.asarray(integer_array, dtype="float")
现在会引发错误。
pandas 0.25.x
In [1]: np.asarray(a, dtype="float")
Out[1]:
array([ 1., 2., nan])
pandas 1.0.0
In [41]: np.asarray(a, dtype="float")
Out[41]: array([ 1., 2., nan])
使用带有显式na_value
的arrays.IntegerArray.to_numpy()
。
In [42]: a.to_numpy(dtype="float", na_value=np.nan)
Out[42]: array([ 1., 2., nan])
缩减可以返回 pd.NA
当执行诸如使用skipna=False
的求和等缩减操作时,在存在缺失值的情况下,结果现在将是pd.NA
,而不是np.nan
(GH 30958)。
pandas 0.25.x
In [1]: pd.Series(a).sum(skipna=False)
Out[1]:
nan
pandas 1.0.0
In [43]: pd.Series(a).sum(skipna=False)
Out[43]: <NA>
value_counts 返回可空整数 dtype
具有可空整数 dtype 的Series.value_counts()
现在为值返回可空整数 dtype。
pandas 0.25.x
In [1]: pd.Series([2, 1, 1, None], dtype="Int64").value_counts().dtype
Out[1]:
dtype('int64')
pandas 1.0.0
In [44]: pd.Series([2, 1, 1, None], dtype="Int64").value_counts().dtype
Out[44]: Int64Dtype()
更多关于pandas.NA
和numpy.nan
之间差异的信息,请参见 NA 语义。
arrays.IntegerArray
的比较现在返回arrays.BooleanArray
。
arrays.IntegerArray
上的比较操作现在返回arrays.BooleanArray
而不是 NumPy 数组(GH 29964)。
pandas 0.25.x
In [1]: a = pd.array([1, 2, None], dtype="Int64")
In [2]: a
Out[2]:
<IntegerArray>
[1, 2, NaN]
Length: 3, dtype: Int64
In [3]: a > 1
Out[3]:
array([False, True, False])
pandas 1.0.0
In [45]: a = pd.array([1, 2, None], dtype="Int64")
In [46]: a > 1
Out[46]:
<BooleanArray>
[False, True, <NA>]
Length: 3, dtype: boolean
请注意,缺失值现在会传播,而不总是像numpy.nan
那样不相等。有关更多信息,请参阅 NA 语义。
默认情况下,Categorical.min()
现在返回最小值,而不是np.nan
。
当Categorical
包含np.nan
时,默认情况下(skipna=True),Categorical.min()
不再返回np.nan
(GH 25303)。
pandas 0.25.x
In [1]: pd.Categorical([1, 2, np.nan], ordered=True).min()
Out[1]: nan
pandas 1.0.0
In [47]: pd.Categorical([1, 2, np.nan], ordered=True).min()
Out[47]: 1
空的 pandas.Series
的默认 dtype
初始化一个空的 pandas.Series
,如果不指定 dtype,现在将引发 DeprecationWarning
(GH 17261)。默认的 dtype 将在未来版本中从 float64
更改为 object
,以保持与 DataFrame
和 Index
的行为一致。
pandas 1.0.0
In [1]: pd.Series()
Out[2]:
DeprecationWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
Series([], dtype: float64)
resample 操作的结果 dtype 推断发生变化
DataFrame.resample()
聚合结果的结果 dtype 规则已更改为扩展类型 (GH 31359)。以前,pandas 将尝试将结果转换回原始 dtype,如果这不可能,则返回通常的推断规则。现在,只有当结果中的标量值是扩展 dtype 的标量类型的实例时,pandas 才会返回原始 dtype 的结果。
In [48]: df = pd.DataFrame({"A": ['a', 'b']}, dtype='category',
....: index=pd.date_range('2000', periods=2))
....:
In [49]: df
Out[49]:
A
2000-01-01 a
2000-01-02 b
pandas 0.25.x
In [1]> df.resample("2D").agg(lambda x: 'a').A.dtype
Out[1]:
CategoricalDtype(categories=['a', 'b'], ordered=False)
pandas 1.0.0
In [50]: df.resample("2D").agg(lambda x: 'a').A.dtype
Out[50]: CategoricalDtype(categories=['a', 'b'], ordered=False, categories_dtype=object)
这修复了 resample
和 groupby
之间的不一致性。这也修复了一个潜在的 bug,即结果的 values 可能会根据如何将结果转换回原始 dtype 而改变。
pandas 0.25.x
In [1] df.resample("2D").agg(lambda x: 'c')
Out[1]:
A
0 NaN
pandas 1.0.0
In [51]: df.resample("2D").agg(lambda x: 'c')
Out[51]:
A
2000-01-01 c
Python 的最低版本增加了
pandas 1.0.0 支持 Python 3.6.1 及更高版本 (GH 29212)。
增加了依赖项的最低版本
一些依赖项的最低支持版本已更新 (GH 29766, GH 29723)。如果安装了,我们现在需要:
包 | 最低版本 | 必需 | 已更改 |
---|---|---|---|
numpy | 1.13.3 | X | |
pytz | 2015.4 | X | |
python-dateutil | 2.6.1 | X | |
bottleneck | 1.2.1 | ||
numexpr | 2.6.2 | ||
pytest (dev) | 4.0.2 |
对于可选库,通常建议使用最新版本。以下表格列出了在 pandas 开发过程中当前正在测试的每个库的最低版本。低于最低测试版本的可选库可能仍然可用,但不被视为受支持。
包 | 最低版本 | 已更改 |
---|---|---|
beautifulsoup4 | 4.6.0 | |
fastparquet | 0.3.2 | X |
gcsfs | 0.2.2 | |
lxml | 3.8.0 | |
matplotlib | 2.2.2 | |
numba | 0.46.0 | X |
openpyxl | 2.5.7 | X |
pyarrow | 0.13.0 | X |
pymysql | 0.7.1 | |
pytables | 3.4.2 | |
s3fs | 0.3.0 | X |
scipy | 0.19.0 | |
sqlalchemy | 1.1.4 | |
xarray | 0.8.2 | |
xlrd | 1.1.0 | |
xlsxwriter | 0.9.8 | |
xlwt | 1.2.0 |
查看依赖项和可选依赖项以获取更多信息。
构建更改
pandas 已添加了一个pyproject.toml文件,并且将不再在上传到 PyPI 的源分发中包含 cythonized 文件(GH 28341,GH 20775)。如果您正在安装构建好的分发(wheel)或通过 conda 安装,这对您不会有任何影响。如果您正在从源代码构建 pandas,则在调用pip install pandas
之前,您不再需要在构建环境中安装 Cython。
其他 API 更改
-
DataFrameGroupBy.transform()
和SeriesGroupBy.transform()
现在在无效操作名称时会引发异常(GH 27489) -
pandas.api.types.infer_dtype()
现在将对整数和np.nan
混合返回“integer-na”(GH 27283) -
MultiIndex.from_arrays()
现在如果显式提供names=None
,将不再从数组中推断名称(GH 27292) -
为了改进制表符补全,pandas 在使用
dir
内省 pandas 对象时不包括大多数已弃用的属性(例如dir(df)
)。要查看排除的属性,请查看对象的_deprecations
属性,例如pd.DataFrame._deprecations
(GH 28805)。 -
unique()
的返回 dtype 现在与输入 dtype 匹配。(GH 27874) -
将
options.matplotlib.register_converters
的默认配置值从True
更改为"auto"
(GH 18720)。现在,pandas 自定义格式化程序仅应用于通过plot()
创建的 pandas 绘图。之前,pandas 的格式化程序将应用于在plot()
之后创建的所有绘图。更多信息请参见单位注册。 -
Series.dropna()
已删除其**kwargs
参数,改为单个how
参数。以前,向**kwargs
提供除how
以外的任何内容都会引发TypeError
(GH 29388) -
在测试 pandas 时,pytest 的新最低版本要求为 5.0.1 (GH 29664)
-
Series.str.__iter__()
已被弃用,并将在将来的版本中删除 (GH 28277). -
在
read_csv()
的默认 NA 值列表中添加了<NA>
(GH 30821)
文档改进
弃用
-
Series.item()
和Index.item()
已被 _ 取消弃用 _ (GH 29250) -
Index.set_value
已被弃用。对于给定的索引idx
、数组arr
、idx
中的idx_val
值和新值val
,idx.set_value(arr, idx_val, val)
等同于arr[idx.get_loc(idx_val)] = val
,应该使用后者 (GH 28621). -
is_extension_type()
已被弃用,应使用is_extension_array_dtype()
代替 (GH 29457) -
eval()
的关键字参数“truediv”已被弃用,并将在将来的版本中删除 (GH 29812) -
DateOffset.isAnchored()
和DatetOffset.onOffset()
已被弃用,并将在将来的版本中删除,请改用DateOffset.is_anchored()
和DateOffset.is_on_offset()
(GH 30340) -
pandas.tseries.frequencies.get_offset
已弃用,将来版本将移除,建议使用pandas.tseries.frequencies.to_offset
(GH 4205) -
Categorical.take_nd()
和CategoricalIndex.take_nd()
已弃用,请使用Categorical.take()
和CategoricalIndex.take()
(GH 27745) -
Categorical.min()
和Categorical.max()
的参数numeric_only
已经被弃用,替换为skipna
(GH 25303) -
lreshape()
的参数label
已弃用,将来版本将移除 (GH 29742) -
pandas.core.index
已被弃用,将来版本将移除,公共类已经移到顶层命名空间 (GH 19711) -
pandas.json_normalize()
现在在顶层命名空间中公开。使用json_normalize
作为pandas.io.json.json_normalize
已经弃用,建议使用pandas.json_normalize()
(GH 27586). -
pandas.read_json()
的numpy
参数已弃用 (GH 28512). -
DataFrame.to_stata()
、DataFrame.to_feather()
和DataFrame.to_parquet()
的参数 “fname” 已被弃用,请使用 “path” (GH 23574) -
RangeIndex
的已弃用的内部属性_start
、_stop
和_step
现在会引发FutureWarning
而不是DeprecationWarning
(GH 26581) -
pandas.util.testing
模块已被弃用,请使用文档中记录的pandas.testing
的公共 API,见 Assertion functions (GH 16232). -
pandas.SparseArray
已被弃用。请使用pandas.arrays.SparseArray
(arrays.SparseArray
)(GH 30642)。 -
Series.take()
和DataFrame.take()
的参数is_copy
已被弃用,并将在将来的版本中移除。(GH 27357) -
对
Index
进行多维索引(例如index[:, None]
)已被弃用,并将在将来的版本中移除,应在索引之前转换为 numpy 数组(GH 30588)。 -
pandas.np
子模块现已被弃用。请直接导入 numpy(GH 30296)。 -
pandas.datetime
类现已弃用。请从datetime
导入(GH 30610)。 -
diff
将来会引发TypeError
而不是隐式丢失扩展类型的 dtype。调用diff
之前,请先转换为正确的 dtype(GH 31025)。
从分组的 DataFrame 中选择列
当从DataFrameGroupBy
对象中选择列时,已弃用通过单个括号传递单个键(或键元组),应改用项列表(GH 23566)。例如:
df = pd.DataFrame({
"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
"B": np.random.randn(8),
"C": np.random.randn(8),
})
g = df.groupby('A')
# single key, returns SeriesGroupBy
g['B']
# tuple of single key, returns SeriesGroupBy
g[('B',)]
# tuple of multiple keys, returns DataFrameGroupBy, raises FutureWarning
g[('B', 'C')]
# multiple keys passed directly, returns DataFrameGroupBy, raises FutureWarning
# (implicitly converts the passed strings into a single tuple)
g['B', 'C']
# proper way, returns DataFrameGroupBy
g[['B', 'C']]
移除先前版本的弃用/更改
移除 SparseSeries 和 SparseDataFrame
SparseSeries
、SparseDataFrame
和DataFrame.to_sparse
方法已被移除(GH 28425)。我们建议改用具有稀疏值的Series
或DataFrame
。
Matplotlib 单位注册
以前,pandas 会在导入 pandas 的副作用下向 matplotlib 注册转换器(GH 18720)。这会改变使用 matplotlib 直接而不是plot()
绘制的图表的输出。
要在 matplotlib 图表中使用 pandas 格式化程序,请指定
In [1]: import pandas as pd
In [2]: pd.options.plotting.matplotlib.register_converters = True
请注意,由DataFrame.plot()
和Series.plot()
创建的图形会自动注册转换器。唯一的行为变化是通过matplotlib.pyplot.plot
或matplotlib.Axes.plot
绘制日期样式对象时。更多信息请参见用于时间序列图的自定义格式化程序。
其他移除
-
从
read_stata()
,StataReader
和StataReader.read()
中移除了先前弃用的关键字“index”,请改用“index_col”(GH 17328) -
移除了
StataReader.data
方法,请使用StataReader.read()
代替(GH 9493) -
移除了
pandas.plotting._matplotlib.tsplot
,请使用Series.plot()
代替(GH 19980) -
pandas.tseries.converter.register
已移至pandas.plotting.register_matplotlib_converters()
(GH 18307) -
Series.plot()
不再接受位置参数,请传递关键字参数代替(GH 30003) -
DataFrame.hist()
和Series.hist()
不再允许figsize="default"
,请通过传递元组来指定图形大小(GH 30003) -
用
Timedelta
对整数数据类型的数组进行 floor 除现在会引发TypeError
(GH 21036) -
TimedeltaIndex
和DatetimeIndex
不再接受“timedelta64”或“datetime64”等非纳秒 dtype 字符串,改用“timedelta64[ns]”和“datetime64[ns]”(GH 24806) -
将
pandas.api.types.infer_dtype()
中默认的“skipna”参数从False
更改为True
(GH 24050) -
移除了
Series.ix
和DataFrame.ix
(GH 26438) -
移除了
Index.summary
(GH 18217) -
从
Index
构造函数中移除了先前废弃的关键字“fastpath”(GH 23110) -
移除了
Series.get_value
、Series.set_value
、DataFrame.get_value
、DataFrame.set_value
(GH 17739) -
移除了
Series.compound
和DataFrame.compound
(GH 26405) -
将
DataFrame.set_index()
和Series.set_axis()
中默认的“inplace”参数从None
更改为False
(GH 27600) -
移除了
Series.cat.categorical
、Series.cat.index
、Series.cat.name
(GH 24751) -
从
to_datetime()
和to_timedelta()
中移除了先前废弃的关键字“box”;另外,现在这些函数总是返回DatetimeIndex
、TimedeltaIndex
、Index
、Series
或DataFrame
(GH 24486) -
to_timedelta()
、Timedelta
和TimedeltaIndex
不再允许“M”、“y”或“Y”作为“unit”参数(GH 23264) -
从(非公开的)
offsets.generate_range
中移除了先前废弃的关键字“time_rule”,该关键字已移至core.arrays._ranges.generate_range()
(GH 24157) -
当使用类似列表的索引器和缺失标签的
DataFrame.loc()
或Series.loc()
时,将不再重新索引(GH 17295) -
当存在不存在的列时,
DataFrame.to_excel()
和Series.to_excel()
将不再重新索引(GH 17295) -
从
concat()
中删除了先前弃用的关键字“join_axes”;改为在结果上使用reindex_like
(GH 22318) -
从
DataFrame.sort_index()
中删除了先前弃用的关键字“by”,改用DataFrame.sort_values()
(GH 10726) -
在
DataFrame.aggregate()
、Series.aggregate()
、core.groupby.DataFrameGroupBy.aggregate()
、core.groupby.SeriesGroupBy.aggregate()
、core.window.rolling.Rolling.aggregate()
中删除了对嵌套重命名的支持(GH 18529) -
将
datetime64
数据传递给TimedeltaIndex
或timedelta64
数据传递给DatetimeIndex
现在会引发TypeError
(GH 23539, GH 23937) -
将
int64
值传递给DatetimeIndex
和时区现在将值解释为 UTC 中的纳秒时间戳,而不是给定时区中的墙时间(GH 24559) -
传递���
DataFrame.groupby()
的元组现在被专门视为单个键 (GH 18314) -
移除了
Index.contains
,应该使用key in index
代替 (GH 30103) -
在
Timestamp
、DatetimeIndex
、TimedeltaIndex
中不再允许对int
或整数数组进行加减操作,应该使用obj + n * obj.freq
代替obj + n
(GH 22535) -
移除了
Series.ptp
(GH 21614) -
移除了
Series.from_array
(GH 18258) -
移除了
DataFrame.from_items
(GH 18458) -
移除了
DataFrame.as_matrix
,Series.as_matrix
(GH 18458) -
移除了
Series.asobject
(GH 18477) -
移除了
DataFrame.as_blocks
,Series.as_blocks
,DataFrame.blocks
,Series.blocks
(GH 17656) -
pandas.Series.str.cat()
现在默认对齐others
,使用join='left'
(GH 27611) -
pandas.Series.str.cat()
不再接受列表样式内部的列表样式了 (GH 27611) -
使用
Categorical
dtype 的Series.where()
(或者使用Categorical
列的DataFrame.where()
)不再允许设置新的类别 (GH 24114) -
从
DatetimeIndex
、TimedeltaIndex
和PeriodIndex
构造函数中删除了先前弃用的关键字“start”、“end”和“periods”,改用date_range()
、timedelta_range()
和period_range()
代替(GH 23919) -
从
DatetimeIndex
和TimedeltaIndex
构造函数中删除了先前弃用的关键字“verify_integrity”(GH 23919) -
从
pandas.core.internals.blocks.make_block
中删除了先前弃用的关键字“fastpath”(GH 19265) -
从
Block.make_block_same_class()
中删除了先前弃用的关键字“dtype”(GH 19434) -
删除了
ExtensionArray._formatting_values
。改用ExtensionArray._formatter
代替(GH 23601) -
删除了
MultiIndex.to_hierarchical
(GH 21613) -
删除了
MultiIndex.labels
,改用MultiIndex.codes
代替(GH 23752) -
从
MultiIndex
构造函数中删除了先前弃用的关键字“labels”,改用“codes”代替(GH 23752) -
删除了
MultiIndex.set_labels
,改用MultiIndex.set_codes()
代替(GH 23752) -
从
MultiIndex.set_codes()
、MultiIndex.copy()
、MultiIndex.drop()
中删除了先前弃用的关键字“labels”,改用“codes”代替(GH 23752) -
不再支持旧版 HDF5 格式(GH 29787)
-
不再允许将 dtype 别名(例如‘datetime64[ns, UTC]’)传递给
DatetimeTZDtype
,请改用DatetimeTZDtype.construct_from_string()
(GH 23990) -
从
read_excel()
中移除了先前弃用的关键字“skip_footer”,改用“skipfooter”(GH 18836) -
read_excel()
不再允许将整数值用作参数usecols
,而是传递从 0 到usecols
(含)的整数列表(GH 23635) -
从
DataFrame.to_records()
中移除了先前弃用的关键字“convert_datetime64”(GH 18902) -
放弃使用
IntervalIndex.from_intervals
,改用IntervalIndex
构造函数(GH 19263) -
将
DatetimeIndex.to_series()
中的默认“keep_tz��参数从None
更改为True
(GH 23739) -
移除了
api.types.is_period
和api.types.is_datetimetz
(GH 23917) -
不再支持读取包含使用 pandas 0.16 之前版本创建的
Categorical
实例的 pickle 文件(GH 27538) -
移除了
pandas.tseries.plotting.tsplot
(GH 18627) -
从
DataFrame.apply()
中移除了先前弃用的关键字“reduce”和“broadcast”(GH 18577) -
从
pandas._testing
中移除了先前弃用的assert_raises_regex
函数(GH 29174) -
在
pandas.core.indexes.frozen
中移除了先前弃用的FrozenNDArray
类(GH 29335) -
移除了先前弃用的关键字“nthreads”从
read_feather()
,请使用“use_threads”代替(GH 23053) -
移除了
Index.is_lexsorted_for_tuple
(GH 29305) -
移除了在
DataFrame.aggregate()
,Series.aggregate()
,core.groupby.DataFrameGroupBy.aggregate()
,core.groupby.SeriesGroupBy.aggregate()
,core.window.rolling.Rolling.aggregate()
中不再支持嵌套重命名(GH 29608) -
移除了
Series.valid
;请使用Series.dropna()
代替(GH 18800) -
移除了
DataFrame.is_copy
,Series.is_copy
(GH 18812) -
移除了
DataFrame.get_ftype_counts
,Series.get_ftype_counts
(GH 18243) -
移除了
DataFrame.ftypes
,Series.ftypes
,Series.ftype
([GH 26744](https://github.com/pandas-dev/pandas/issues/26744) -
移除了
Index.get_duplicates
,请使用idx[idx.duplicated()].unique()
代替(GH 20239) -
移除了
Series.clip_upper
,Series.clip_lower
,DataFrame.clip_upper
,DataFrame.clip_lower
(GH 24203) -
移除了修改
DatetimeIndex.freq
,TimedeltaIndex.freq
或PeriodIndex.freq
的能力(GH 20772) -
移除了
DatetimeIndex.offset
(GH 20730) -
移除了
DatetimeIndex.asobject
,TimedeltaIndex.asobject
,PeriodIndex.asobject
,请使用astype(object)
代替(GH 29801) -
从
factorize()
中删除了先前弃用的关键字“order”(GH 19751) -
从
read_stata()
和DataFrame.to_stata()
中删除了先前弃用的关键字“encoding”(GH 21400) -
将
concat()
中的默认“sort”参数从None
更改为False
(GH 20613) -
从
DataFrame.update()
中删除了先前弃用的关键字“raise_conflict”,现在使用“errors”代替(GH 23585) -
从
DatetimeIndex.shift()
,TimedeltaIndex.shift()
,PeriodIndex.shift()
中删除了先前弃用的关键字“n”,现在使用“periods”代替(GH 22458) -
从
DataFrame.resample()
中删除了先前弃用的关键字“how”、“fill_method”和“limit”(GH 30139) -
现在使用
timedelta64[ns]
dtype 将整数传递给Series.fillna()
或DataFrame.fillna()
会引发TypeError
(GH 24694) -
不再支持将多个轴传递给
DataFrame.dropna()
(GH 20995) -
移除了
Series.nonzero
,现在使用to_numpy().nonzero()
代替(GH 24048) -
将浮点 dtype
codes
传递给Categorical.from_codes()
不再受支持,现在传递codes.astype(np.int64)
(GH 21775) -
从
Series.str.partition()
和Series.str.rpartition()
中删除了先前弃用的关键字“pat”,现在使用“sep”代替(GH 23767) -
移除了
Series.put
(GH 27106) -
移除了
Series.real
,Series.imag
(GH 27106) -
移除了
Series.to_dense
,DataFrame.to_dense
(GH 26684) -
移除了
Index.dtype_str
,现在使用str(index.dtype)
代替(GH 27106) -
Categorical.ravel()
现在返回一个Categorical
而不是一个ndarray
(GH 27199) -
Numpy ufuncs 上的‘outer’方法,例如
np.subtract.outer
在Series
对象上的操作不再支持,并将引发NotImplementedError
(GH 27198) -
移除了
Series.get_dtype_counts
和DataFrame.get_dtype_counts
(GH 27145) -
将
Categorical.take()
中fill_value
参数的默认值从True
更改为False
(GH 20841) -
将
Series.rolling().apply()
,DataFrame.rolling().apply()
,Series.expanding().apply()
和DataFrame.expanding().apply()
中raw
参数的默认值从None
更改为False
([GH 20584](https://github.com/pandas-dev/pandas/issues/20584) -
移除了
Series.argmin()
和Series.argmax()
的弃用行为,现在使用Series.idxmin()
和Series.idxmax()
来获得旧行为(GH 16955) -
将带有时区信息的
datetime.datetime
或Timestamp
传递给带有tz
参数的Timestamp
构造函数现在会引发ValueError
(GH 23621) -
移除了
Series.base
,Index.base
,Categorical.base
,Series.flags
,Index.flags
,PeriodArray.flags
,Series.strides
,Index.strides
,Series.itemsize
,Index.itemsize
,Series.data
,Index.data
(GH 20721) -
将
Timedelta.resolution()
更改为匹配标准库datetime.timedelta.resolution
的行为,对于旧行为,请使用Timedelta.resolution_string()
(GH 26839) -
删除了
Timestamp.weekday_name
、DatetimeIndex.weekday_name
和Series.dt.weekday_name
(GH 18164) -
在
Timestamp.tz_localize()
、DatetimeIndex.tz_localize()
和Series.tz_localize()
中删除了先前弃用的关键字“errors”(GH 22644) -
将
CategoricalDtype
中的默认“ordered”参数从None
更改为False
(GH 26336) -
Series.set_axis()
和DataFrame.set_axis()
现在要求将“labels”作为第一个参数,并将“axis”作为可选的命名参数(GH 30089) -
删除了
to_msgpack
、read_msgpack
、DataFrame.to_msgpack
、Series.to_msgpack
���GH 27103) -
删除了
Series.compress
(GH 21930) -
从
Categorical.fillna()
中删除了先前弃用的关键字“fill_value”,请改用“value”(GH 19269) -
从
andrews_curves()
中删除了先前弃用的关键字“data”,请改用“frame”(GH 6956) -
从
parallel_coordinates()
中删除了先前弃用的关键字“data”,请改用“frame”(GH 6956) -
从
parallel_coordinates()
中删除了先前弃用的关键字“colors”,请改用“color”(GH 6956) -
从
read_gbq()
中删除了先前弃用的关键字“verbose”和“private_key”(GH 30200) -
现在,在 tz-aware 的
Series
和DatetimeIndex
上调用np.array
和np.asarray
将返回 tz-aware 的Timestamp
对象数组(GH 24596)
性能提升
-
在使用非唯一的
IntervalIndex
进行索引时,性能有所提升(GH 27489) -
MultiIndex.is_monotonic
中的性能有所提升(GH 27495) -
在
cut()
中,当bins
是一个非唯一的IntervalIndex
时,性能有所提升(GH 27668) -
当使用
range
初始化一个DataFrame
时,性能有所提升(GH 30171) -
当
method
为"spearman"
时,DataFrame.corr()
的性能有所提升(GH 28139) -
当提供一个替换值列表时,
DataFrame.replace()
的性能有所提升(GH 28099) -
通过使用向量化而不是迭代循环,在
DataFrame.select_dtypes()
中的性能有所提升(GH 28317) -
Categorical.searchsorted()
和CategoricalIndex.searchsorted()
的性能有所提升(GH 28795) -
当将一个
Categorical
与一个标量进行比较且标量未在类别中找到时,性能有所提升(GH 29750) -
在检查
Categorical
中的值是否等于、大于或大于给定标量时,性能有所提升。如果检查Categorical
是否小于或小于等于标量,则不会有改进(GH 29820) -
在
Index.equals()
和MultiIndex.equals()
中的性能有所提升(GH 29134) -
在
infer_dtype()
中,当skipna
为True
时性能有所提升(GH 28814)
Bug 修复
分类
-
添加了测试以确保
fillna()
在值不是类别中的值时引发正确的ValueError
消息(GH 13628) -
修复了
Categorical.astype()
中处理NaN
值时转换为整数时的错误(GH 28406) -
当目标包含重复项时,使用
CategoricalIndex
的DataFrame.reindex()
会失败,并且如果源包含重复项,则不会失败(GH 28107) -
修复了
Categorical.astype()
不允许转换为扩展数据类型的错误(GH 28668) -
修复了
merge()
无法在分类和扩展数据类型列上进行连接的错误(GH 28668) -
Categorical.searchsorted()
和CategoricalIndex.searchsorted()
现在也适用于无序的分类数据类型(GH 21667) -
添加了测试,以确保使用
DataFrame.to_parquet()
或read_parquet()
将保留字符串类型的分类数据类型(GH 27955) -
更改了
Categorical.remove_categories()
中的错误消息,始终将无效的移除显示为一个集合(GH 28669) -
在分类数据类型的
Series
上使用日期访问器时,未返回与在该类型的Series
上使用str.()
/dt.()
相同类型的对象。例如,当在具有重复条目的Categorical
上访问Series.dt.tz_localize()
时,访问器会跳过重复项(GH 27952) -
修复了
DataFrame.replace()
和Series.replace()
中对分类数据给出不正确结果的错误(GH 26988) -
修复了在空分类上调用
Categorical.min()
或Categorical.max()
会引发 numpy 异常的错误(GH 30227) -
通过
groupby(..., observed=False)
调用时,以下方法现在在未观察到的类别上也能正确输出值(GH 17605) *core.groupby.SeriesGroupBy.count()
*core.groupby.SeriesGroupBy.size()
*core.groupby.SeriesGroupBy.nunique()
*core.groupby.SeriesGroupBy.nth()
日期时间类
-
在插入到具有 datetime64 数据类型的
Series
时,Series.__setitem__()
错误地将np.timedelta64("NaT")
转��为np.datetime64("NaT")
的错误(GH 27311) -
在底层数据为只读时,
Series.dt()
属性查找中存在错误(GH 27529) -
修复了
HDFStore.__getitem__
错误地读取在 Python 2 中创建的 tz 属性的错误(GH 26443) -
在
to_datetime()
中存在一个错误,传递错误=”coerce”的格式不正确的str
数组可能会错误地引发ValueError
(GH 28299)。 -
在
core.groupby.SeriesGroupBy.nunique()
中存在一个错误,NaT
值干扰了唯一值的计数(GH 27951)。 -
在
Timestamp
减法中,当从np.datetime64
对象中减去Timestamp
时,错误地引发TypeError
(GH 28286)。 -
现在,对带有
Timestamp
的整数或整数类型数组的加法和减法将引发NullFrequencyError
而不是ValueError
(GH 28268)。 -
当对整数类型的
Series
和DataFrame
添加或减去np.datetime64
对象时,会失败地引发TypeError
,存在一个错误(GH 28080)。 -
在
Series.astype()
、Index.astype()
和DataFrame.astype()
中存在一个错误,当转换为整数类型时未能处理NaT
(GH 28492)。 -
在
Week
中存在一个错误,当添加或减去无效类型时,weekday
会错误地引发AttributeError
而不是TypeError
(GH 28530)。 -
在操作带有
'timedelta64[ns]'
类型的Series
时,DataFrame
的算术运算存在一个错误(GH 28049)。 -
在
core.groupby.generic.SeriesGroupBy.apply()
中存在一个错误,在原始 DataFrame 中的某一列是日期时间,并且列标签不是标准整数时,会引发ValueError
(GH 28247)。 -
在
pandas._config.localization.get_locales()
中存在 Bug,导致locales -a
将区域设置列表编码为 windows-1252 (GH 23638, GH 24760, GH 27368) -
在调用带有
timedelta64[ns]
数据类型时,Series.var()
出现 Bug,未能引发TypeError
错误 (GH 28289) -
在调用
DatetimeIndex.strftime()
和Series.dt.strftime()
时出现 Bug,将NaT
转换为字符串'NaT'
而不是np.nan
(GH 29578) -
在使用长度不正确的布尔蒙版屏蔽类似日期时间的数组时,未引发
IndexError
错误,存在 Bug (GH 30308) -
Timestamp.resolution
是一个属性而不是类属性,存在 Bug (GH 29910) -
当调用
pandas.to_datetime()
时传入None
时,应该返回NaT
,但是出现 Bug,引发TypeError
错误 (GH 30011) -
在使用
cache=True
(默认情况下)时,pandas.to_datetime()
在处理deque
对象时出现 Bug,导致失败 (GH 29403) -
在调用带有
datetime64
或timedelta64
数据类型时,Series.item()
、DatetimeIndex.item()
和TimedeltaIndex.item()
函数返回整数而不是Timestamp
或Timedelta
(GH 30175) -
在执行 DatetimeIndex 加法时,添加非优化的
DateOffset
会错误地丢弃时区信息,存在 Bug (GH 30336) -
在尝试从 DatetimeIndex 中删除不存在的值时,
DataFrame.drop()
出现 Bug,会产生令人困惑的错误信息 (GH 30399) -
在
DataFrame.append()
函数中存在一个 bug,会删除新数据的时区信息 (GH 30238) -
在具有时区感知 dtype 的
Series.cummin()
和Series.cummax()
函数中存在一个 bug,错误地丢弃了其时区信息 (GH 15553) -
在
DatetimeArray
、TimedeltaArray
和PeriodArray
中存在一个 bug,就地加法和减法实际上没有就地操作 (GH 24115) -
在调用时存在一个 bug,在存储
IntegerArray
的Series
上调用pandas.to_datetime()
会引发TypeError
而不是返回Series
(GH 30050) -
在
date_range()
函数中存在一个 bug,当自定义工作时间为freq
并给定periods
数量时,会出现问题 (GH 30593) -
在与
PeriodIndex
比较时存在一个 bug,将整数错误地转换为Period
对象,与Period
比较行为不一致 (GH 30722) -
在
DatetimeIndex.insert()
函数中存在一个 bug,在尝试将带有时区信息的Timestamp
插入到没有时区信息的DatetimeIndex
或反之时,错误地引发ValueError
而不是TypeError
(GH 30806)
时间差
- 在从
np.datetime64
对象减去TimedeltaIndex
或TimedeltaArray
时存在一个 bug (GH 29558)
时区
数值
-
在
DataFrame.quantile()
函数中存在一个 bug,当零列DataFrame
时,错误地触发异常 (GH 23925) -
DataFrame
灵活的不等比较方法(DataFrame.lt()
、DataFrame.le()
、DataFrame.gt()
、DataFrame.ge()
)与对象 dtype 和complex
条目失败,未像它们的Series
对应物那样引发TypeError
(GH 28079) -
DataFrame
逻辑操作(&
、|
、^
)中的错误,未像Series
那样通过填充 NA 值匹配行为(GH 28741) -
DataFrame.interpolate()
中的错误,指定轴名称引用变量之前未分配(GH 29142) -
Series.var()
中的错误,当传递一个可空整数 dtype 序列时,未通过 ddof 参数计算正确的值(GH 29128) -
当使用
frac
> 1 和replace
= False 时,改进了错误消息(GH 27451) -
数值索引中的错误导致可以用无效 dtype(例如类似日期时间的)实例化
Int64Index
、UInt64Index
或Float64Index
(GH 29539) -
UInt64Index
在从值在np.uint64
范围内的列表构造时存在精度丢失的错误(GH 29526) -
NumericIndex
构造中的错误导致当使用np.uint64
范围内的整数时索引失败(GH 28023) -
NumericIndex
构造中的错误导致当使用np.uint64
范围内的整数索引DataFrame
时,UInt64Index
被转换为Float64Index
(GH 28279) -
在使用未排序索引的情况下,使用 method=
index
时的Series.interpolate()
存在错误,之前会返回不正确的结果(GH 21037) -
DataFrame.round()
中的错误,其中具有CategoricalIndex
的DataFrame
的IntervalIndex
列会错误地引发TypeError
(GH 30063) -
当存在重复索引时,
Series.pct_change()
和DataFrame.pct_change()
中的错误(GH 30463) -
DataFrame
中的累积操作错误地转换为对象 dtype(例如 cumsum,cummax)(GH 19296) -
diff
中丢失扩展类型的 dtype(GH 30889) -
在一个列是可空整数 dtype 时,
DataFrame.diff
引发IndexError
的错误(GH 30967)
转换
字符串
- 在空
Series
上调用Series.str.isalnum()
(以及其他“ismethods”)将返回object
dtype 而不是bool
(GH 29624)
区间
-
在
IntervalIndex.get_indexer()
中的错误,其中Categorical
或CategoricalIndex
的target
会错误地引发TypeError
(GH 30063) -
在
pandas.core.dtypes.cast.infer_dtype_from_scalar
中存在的错误,传递pandas_dtype=True
时未推断出IntervalDtype
(GH 30337) -
Series
构造函数中的错误,从一个Interval
对象的list
构造一个Series
导致object
类型而不是IntervalDtype
(GH 23563) -
IntervalDtype
中的错误,其中kind
属性错误地设置为None
而不是"O"
(GH 30568) -
具有间隔数据的
IntervalIndex
、IntervalArray
和Series
中的错误,其中等式比较不正确 (GH 24112)
索引
-
使用反向切片进行赋值的错误 (GH 26939)
-
DataFrame.explode()
中的错误会在索引中存在重复时重复帧 (GH 28010) -
重新索引一个包含
Period
的PeriodIndex()
与包含其他类型的索引的错误 (GH 28323) (GH 28337) -
修复通过
.loc
分配列时,使用 numpy 非 ns datetime 类型的错误 (GH 27395) -
Float64Index.astype()
中的错误,在将np.inf
强制转换为整数 dtype 时未正确处理 (GH 28475) -
Index.union()
可能在左侧包含重复项时失败 (GH 28257) -
使用
.loc
进行索引时的错误,其中索引是一个具有非字符串类别的CategoricalIndex
无法正常工作 (GH 17569, GH 30225) -
Index.get_indexer_non_unique()
在某些情况下可能会出现TypeError
错误,例如在字符串索引中搜索整数时 (GH 28257) -
在
Float64Index.get_loc()
中出现的错误,错误地引发TypeError
而不是KeyError
(GH 29189) -
在设置 1 行 DataFrame 中的分类值时,
DataFrame.loc()
中出现的 dtype 不正确的错误(GH 25495) -
当输入包含缺失值时,
MultiIndex.get_loc()
无法找到缺失值(GH 19132) -
在长度与
True
值的数量匹配且新数据不是Series
或np.array
时,Series.__setitem__()
中的错误分配值布尔索引器时引发的错误(GH 30567) -
在使用
PeriodIndex
进行索引时的错误,错误地接受表示年份的整数,应使用例如ser.loc["2007"]
而不是ser.loc[2007]
(GH 30763)
缺失
多重索引
-
如果
verify_integrity
参数为True
(默认),则构造MultiIndex
将验证给定的sortorder
是否与实际的lexsort_depth
兼容(GH 28735) -
使用
MultiIndex
的 Series 和 MultiIndex.drop
在给定级别上不存在标签时引发异常(GH 8594)
输入输出
-
当使用 Python csv 引擎时,
read_csv()
现在接受二进制模式文件缓冲区(GH 23779) -
在使用元组作为列或索引值且使用
orient="columns"
或orient="index"
时,DataFrame.to_json()
中存在错误,会生成无效的 JSON(GH 20500) -
改进无穷大解析。
read_csv()
现在将Infinity
、+Infinity
、-Infinity
解释为浮点值(GH 10065) -
在长度
na_rep
比文本输入数据短时,DataFrame.to_csv()
中的值被截断的错误(GH 25099) -
在
DataFrame.to_string()
中存在一个错误,使用显示选项截断值而不是输出完整内容(GH 9784) -
在
DataFrame.to_json()
中存在一个错误,使用orient="table"
时,日期时间列标签未以 ISO 格式写出(GH 28130) -
在
DataFrame.to_parquet()
中存在一个错误,如果文件不存在,则使用engine='fastparquet'
写入到 GCS 会失败(GH 28326) -
在
read_hdf()
中存在一个错误,在引发异常时关闭了未打开的存储(GH 28699) -
在
DataFrame.read_json()
中存在一个错误,使用orient="index"
时无法保持顺序(GH 28557) -
在
DataFrame.to_html()
中存在一个错误,未验证formatters
参数的长度(GH 28469) -
在
DataFrame.read_excel()
中存在一个错误,当engine='ods'
时,sheet_name
参数引用不存在的工作表时(GH 27676) -
在
pandas.io.formats.style.Styler()
中存在一个错误,浮点数的格式化未正确显示小数位数(GH 13257) -
在
DataFrame.to_html()
中存在一个错误,当同时使用formatters=<list>
和max_cols
时(GH 25955) -
在
Styler.background_gradient()
中存在一个错误,无法处理dtype
为Int64
的数据(GH 28869) -
在
DataFrame.to_clipboard()
中存在一个错误,它在 ipython 中无法可靠工作(GH 22707) -
在
read_json()
中存在一个错误,默认编码未设置为utf-8
(GH 29565) -
在
PythonParser
中存在一个错误,当处理十进制字段时,字符串和字节会混合在一起(GH 29650) -
read_gbq()
现在接受progress_bar_type
参数,在数据下载时显示进度条。(GH 29857) -
在
pandas.io.json.json_normalize()
中存在一个 bug,在record_path
指定的位置缺少值会引发TypeError
(GH 30148) -
read_excel()
现在接受二进制数据(GH 15914) -
在
read_csv()
中存在一个 bug,其编码处理仅限于 C 引擎中的字符串utf-16
(GH 24130)
绘图
-
Series.plot()
中存在一个 bug,无法绘制布尔值(GH 23719) -
DataFrame.plot()
中存在一个 bug,在没有行时无法绘图(GH 27758) -
DataFrame.plot()
中存在一个 bug,当在同一轴上绘制多个系列时,会产生错误的图例标记(GH 18222) -
DataFrame.plot()
中存在一个 bug,在kind='box'
且数据包含日期时间或时间间隔数据时。这些类型现在会自动丢弃(GH 22799) -
DataFrame.plot.line()
和DataFrame.plot.area()
中存在 bug,在 x 轴上产生错误的 xlim(GH 27686, GH 25160, GH 24784) -
DataFrame.boxplot()
存在一个 bug,不接受像DataFrame.plot.box()
那样的color
参数(GH 26214) -
DataFrame.plot.bar()
中的xticks
参数被忽略了一个 bug(GH 14119) -
set_option()
现在验证提供给'plotting.backend'
的绘图后端是否在设置选项时实现了该后端,而不是在创建绘图时 (GH 28163) -
DataFrame.plot()
现在允许一个backend
关键字参数,以允许在一个会话中在不同的后端之间切换 (GH 28619). -
颜色验证中的 bug 错误地对非颜色样式进行引发 (GH 29122).
-
允许
DataFrame.plot.scatter()
绘制objects
和datetime
类型的数据 (GH 18755, GH 30391) -
DataFrame.hist()
中的 bug,xrot=0
与by
和子图不兼容 (GH 30288).
GroupBy/resample/rolling
-
core.groupby.DataFrameGroupBy.apply()
中的 bug 只显示单个组的输出,当函数返回一个Index
时 (GH 28652) -
当多个组中的任何一个组含有所有 NA 值时,
DataFrame.groupby()
中出现的 bug 引发IndexError
(GH 20519) -
当与空的
Series
或DataFrame
一起使用时,Resampler.size()
和Resampler.count()
返回错误的 dtype (GH 28427) -
当
axis=1
时,DataFrame.rolling()
不允许在 datetimes 上滚动 (GH 28192) -
DataFrame.rolling()
中的错误,不允许在多级索引级别上执行滚动操作(GH 15584)。 -
DataFrame.rolling()
中的错误,不允许在单调递减的时间索引上执行滚动操作(GH 19248)。 -
在
DataFrame.groupby()
中存在错误,当axis=1
时,不提供按列名选择的功能(GH 27614)。 -
core.groupby.DataFrameGroupby.agg()
中存在错误,无法使用具有命名聚合的 lambda 函数(GH 27519)。 -
在
DataFrame.groupby()
中,通过分类列进行分组时丢失列名称信息的错误(GH 28787)。 -
在
DataFrame.groupby()
和Series.groupby()
中,命名聚合中重复输入函数引发的错误已被移除。之前如果在相同的列上应用相同的函数则会引发错误,现在如果新分配的名称不同,则允许使用(GH 28426)。 -
core.groupby.SeriesGroupBy.value_counts()
将能够处理即使Grouper
使得分组为空的情况(GH 28479)。 -
在
core.window.rolling.Rolling.quantile()
中存在错误,当在groupby
中使用时,会忽略interpolation
关键字参数(GH 28779)。 -
在
DataFrame.groupby()
中存在错误,any
、all
、nunique
和转换函数会错误处理重复的列标签(GH 21668)。 -
在带有时区信息的 datetime64 列中,
core.groupby.DataFrameGroupBy.agg()
中的错误将结果错误地转换为原始 dtype(GH 29641) -
在使用 axis=1 并且具有单层列索引时,
DataFrame.groupby()
中的错误(GH 30208) -
在使用 axis=1 时,
DataFrame.groupby()
中的错误 nunique(GH 30253) -
当具有多个列表样式的 q 值和整数列名称时,
DataFrameGroupBy.quantile()
和SeriesGroupBy.quantile()
中的错误(GH 30289) -
在
fill_method
为None
时,DataFrameGroupBy.pct_change()
和SeriesGroupBy.pct_change()
中的错误导致TypeError
(GH 30463) -
在
Rolling.count()
和Expanding.count()
参数中,min_periods
被忽略的错误(GH 26996)
重塑
-
DataFrame.apply()
中的错误,导致空的DataFrame
输出不正确(GH 28202, GH 21959) -
在创建 MultiIndex 时,
DataFrame.stack()
中的错误未正确处理非唯一索引(GH 28301) -
pivot_table()
中的错误,在margins=True
和aggfunc='mean'
时未返回正确的类型float
(GH 24893) -
merge_asof()
中修复了无法使用datetime.timedelta
作为tolerance
kwarg 的问题(GH 28098) -
merge()
中出现的问题已修复,与 MultiIndex 一起时未正确追加后缀(GH 28518) -
qcut()
和cut()
现在可以处理布尔值输入(GH 20303) -
确保在使用容差值时,所有 int dtypes 都可以在
merge_asof()
中使用。之前,每个非 int64 类型都会引发错误的MergeError
(GH 28870) -
当
get_dummies()
的columns
不是类似列表的值时,现在会提供更好的错误消息(GH 28383) -
Index.join()
中出现的问题已修复,导致MultiIndex
名称顺序不匹配时出现无限递归错误(GH 25760, GH 28956) -
Bug
Series.pct_change()
中提供锚定频率会引发ValueError
的问题已修复(GH 28664) -
在某些情况下,当两个 DataFrame 以不同顺序具有相同列时,
DataFrame.equals()
错误地返回 True 的问题已修复(GH 28839) -
DataFrame.replace()
中出现的问题已修复,导致非数值替换器的 dtype 未被尊重(GH 26632) -
在为
id_vars
或value_vars
提供混合字符串和数值的情况下,melt()
中出现的问题已修复,错误地引发ValueError
(GH 29718) -
在转置每列都是相同扩展 dtype 的
DataFrame
时,现在会保留 dtype(GH 30091) -
在合并时出现了
merge_asof()
的错误,合并在一个带时区的left_index
和一个带时区的列right_on
上时出现问题 (GH 29864) -
改进了当
labels=True
时的cut()
和qcut()
的错误消息和文档字符串(GH 13318) -
对带有列表级别的
DataFrame.unstack()
缺少fill_na
参数的错误 (GH 30740)
稀疏
-
SparseDataFrame
中的算术运算错误地将输入转换为浮点数 (GH 28107) -
在存在名为
sparse
的列而不是访问器时,DataFrame.sparse
返回Series
的错误 (GH 30758) -
修复了带有布尔型
SparseArray
的operator.xor()
。现在返回稀疏结果,而不是对象类型 (GH 31025)
ExtensionArray
其他
-
尝试使用
set_option()
设置display.precision
、display.max_rows
或display.max_columns
为除了None
或正整数之外的任何值都会引发ValueError
(GH 23348) -
使用带有重叠键的嵌套字典的
DataFrame.replace()
不再引发异常,现在与平坦字典的行为匹配 (GH 27660) -
DataFrame.to_csv()
和Series.to_csv()
现在支持字典作为compression
参数,其中键'method'
是压缩方法,其他键是附加的压缩选项,当压缩方法是'zip'
时。 (GH 26023) -
在布尔序列中,
Series.diff()
存在错误地引发TypeError
的问题 (GH 17294) -
当传递
Series
的元组时,Series.append()
将不再引发TypeError
(GH 28410) -
在调用
pandas.libs._json.encode()
时存在错误的错误消息,针对 0d 数组 (GH 18878) -
在
DataFrame.query()
和DataFrame.eval()
中现在也可以使用反引号引用来使用无效标识符,比如以数字开头的名称,Python 关键字,或者使用单个字符运算符。 (GH 27017) -
在
pd.core.util.hashing.hash_pandas_object
中存在错误,将包含元组的数组错误地视为非可散列对象 (GH 28969) -
在使用空列表附加时,
DataFrame.append()
引发IndexError
的错误已修复 (GH 28769) -
修复
AbstractHolidayCalendar
以返回 2030 年后的正确结果(现在延伸到 2200 年)(GH 27790) -
修复
IntegerArray
在除以0
时返回inf
而不是NaN
的问题 (GH 27398) -
当另一个值为
0
或1
时,已修复了IntegerArray
的pow
操作(GH 29997) -
当启用 use_inf_as_na 时,在
Series.count()
中存在错误引发 (GH 29478) -
在非可散列名称的
Index
中存在错误,但未引发TypeError
(GH 29069) -
在传递二维
ndarray
和扩展 dtype 时的DataFrame
构造函数中存在错误(GH 12513) -
在使用
dtype="string"
和na_rep
提供系列时,DataFrame.to_csv()
存在错误,na_rep
被截断为 2 个字符。 (GH 29975) -
DataFrame.itertuples()
中的错误,会错误地确定是否可以将命名元组用于 255 列的数据框 (GH 28282) -
处理
testing.assert_series_equal()
中的嵌套 NumPyobject
数组,用于 ExtensionArray 实现 (GH 30841)
分类
-
添加测试以确保当值不是来自类别时,
fillna()
会引发正确的ValueError
消息 (GH 13628) -
Categorical.astype()
中的错误,在转换为整数时,NaN
值处理不正确 (GH 28406) -
当目标包含重复项时,
DataFrame.reindex()
与CategoricalIndex
结合使用会失败,并且如果源包含重复项则不会失败 (GH 28107) -
Categorical.astype()
中的错误,不允许转换为扩展 dtype (GH 28668) -
merge()
中的错误,无法在分类和扩展 dtype 列上进行连接 (GH 28668) -
Categorical.searchsorted()
和CategoricalIndex.searchsorted()
现在也适用于无序分类 (GH 21667) -
添加测试以确保使用
DataFrame.to_parquet()
或read_parquet()
将字符串类型的 parquet 回转时会保留分类 dtype (GH 27955) -
在
Categorical.remove_categories()
中更改错误消息,始终将无效的移除项显示为集合 (GH 28669) -
在日期时间类别的分类数据
Series
上使用日期访问器时,未返回与在该类型的Series
上使用str.()
/dt.()
相同类型的对象。例如,在具有重复条目的Categorical
上访问Series.dt.tz_localize()
时,访问器会跳过重复项(GH 27952) -
DataFrame.replace()
和Series.replace()
中的错误会在分类数据上产生不正确的结果(GH 26988) -
在空分类中调用
Categorical.min()
或Categorical.max()
会引发 numpy 异常的错误(GH 30227) -
通过
groupby(..., observed=False)
调用时,以下方法现在在未观察到的类别上也能正确输出值(GH 17605) *core.groupby.SeriesGroupBy.count()
*core.groupby.SeriesGroupBy.size()
*core.groupby.SeriesGroupBy.nunique()
*core.groupby.SeriesGroupBy.nth()
日期时间类
-
Series.__setitem__()
中的错误,当插入到具有 datetime64 dtype 的Series
时,不正确地将np.timedelta64("NaT")
转换为np.datetime64("NaT")
(GH 27311) -
在只读数据的情况下,
Series.dt()
属性查找中存在错误(GH 27529) -
HDFStore.__getitem__
中的错误,不正确地读取在 Python 2 中创建的 tz 属性(GH 26443) -
在
to_datetime()
中的 Bug,通过 errors=”coerce” 传递格式不正确的str
数组可能错误地导致引发ValueError
(GH 28299) -
在
core.groupby.SeriesGroupBy.nunique()
中的 Bug,NaT
值干扰了唯一值的计数(GH 27951) -
在
Timestamp
减法中,从Timestamp
减去np.datetime64
对象时错误地引发TypeError
(GH 28286) -
使用
Timestamp
进行整数或整数 dtype 数组的加法和减法现在将引发NullFrequencyError
而不是ValueError
(GH 28268) -
在
Series
和DataFrame
中的 Bug,整数 dtype 未能在添加或减去np.datetime64
对象时引发TypeError
(GH 28080) -
在
Series.astype()
、Index.astype()
和DataFrame.astype()
中的 Bug,当转换为整数 dtype 时未能处理NaT
(GH 28492) -
在
Week
中的 Bug,当添加或减去无效类型时,weekday
错误地引发AttributeError
而不是TypeError
(GH 28530) -
在
DataFrame
进行算术运算时,与 dtype 为'timedelta64[ns]'
的Series
进行操作时的 Bug(GH 28049) -
在
core.groupby.generic.SeriesGroupBy.apply()
中的 Bug 导致当原始 DataFrame 中的列是日期时间且列标签不是标准整数时引发ValueError
(GH 28247) -
pandas._config.localization.get_locales()
函数中locales -a
将本地化列表编码为 windows-1252 的 Bug(GH 23638, GH 24760, GH 27368) -
Series.var()
函数在使用timedelta64[ns]
类型时未能引发TypeError
的 Bug(GH 28289) -
DatetimeIndex.strftime()
和Series.dt.strftime()
函数中NaT
被转换为字符串'NaT'
而不是np.nan
的 Bug(GH 29578) -
使用错误长度的布尔掩码掩盖类似日期时间的数组而不引发
IndexError
的 Bug(GH 30308) -
Timestamp.resolution
属性应该是一个类属性而不是一个属性的 Bug(GH 29910) -
pandas.to_datetime()
函数在传递None
时抛出TypeError
而不是返回NaT
的 Bug(GH 30011) -
pandas.to_datetime()
函数在使用cache=True
(默认情况下)时无法正确处理deque
对象的 Bug(GH 29403) -
Series.item()
函数在使用datetime64
或timedelta64
类型、DatetimeIndex.item()
和TimedeltaIndex.item()
返回整数而不是Timestamp
或Timedelta
的 Bug(GH 30175) -
在将非优化的
DateOffset
添加到DatetimeIndex
时错误地丢弃时区信息的 Bug(GH 30336) -
DataFrame.drop()
函数尝试从 DatetimeIndex 中删除不存在的值时会产生令人困惑的错误消息的 Bug(GH 30399) -
DataFrame.append()
中的错误会移除新数据的时区感知性 (GH 30238) -
Series.cummin()
和Series.cummax()
中的错误,具有时区感知的数据类型错误地删除其时区 (GH 15553) -
DatetimeArray
、TimedeltaArray
和PeriodArray
中的错误,就地加法和减法实际上没有就地操作 (GH 24115) -
pandas.to_datetime()
在使用存储IntegerArray
的Series
时提出TypeError
而不是返回Series
的错误 (GH 30050) -
date_range()
中的错误,使用自定义工作时间作为freq
并给定periods
的数量 (GH 30593) -
PeriodIndex
比较中的错误,将整数错误地转换为Period
对象,与Period
比较行为不一致 (GH 30722) -
DatetimeIndex.insert()
中的错误,在尝试将具有时区感知的Timestamp
插入时区不感知的DatetimeIndex
或反之时提出ValueError
而不是TypeError
(GH 30806)
时间间隔
- 从
TimedeltaIndex
或TimedeltaArray
减去np.datetime64
对象的错误 (GH 29558)
时区
数字
-
DataFrame.quantile()
中的错误,使用零列DataFrame
错误地提出(GH 23925) -
DataFrame
灵活的不等比较方法(DataFrame.lt()
、DataFrame.le()
、DataFrame.gt()
、DataFrame.ge()
)与对象类型和complex
条目一起失败,未像它们的Series
对应物那样引发TypeError
(GH 28079) -
在
DataFrame
逻辑操作(&
、|
、^
)中存在错误,不像Series
那样通过填充 NA 值来匹配行为(GH 28741) -
在
DataFrame.interpolate()
中存在错误,指定轴名称引用变量之前未分配(GH 29142) -
在
Series.var()
中存在错误,未通过ddof
参数计算具有可空整数 dtype 系列的正确值(GH 29128) -
当使用
frac
> 1 且replace
= False 时,改进了错误消息(GH 27451) -
数值索引中存在错误,导致可以用无效 dtype(例如类似日期时间的)实例化
Int64Index
、UInt64Index
或Float64Index
(GH 29539) -
在从值在
np.uint64
范围内的列表构造时,UInt64Index
存在精度丢失的错误(GH 29526) -
在使用
np.uint64
范围内的整数时,NumericIndex
构造中存在导致索引失败的错误(GH 28023) -
在使用
np.uint64
范围内的整数索引DataFrame
时,导致NumericIndex
构造中存在错误,将UInt64Index
转换为Float64Index
(GH 28279) -
当使用
method=index
且索引未排序时,在Series.interpolate()
中存在错误,之前会返回不正确的结果(GH 21037) -
在
DataFrame.round()
中的错误,其中具有CategoricalIndex
的DataFrame
的IntervalIndex
列将错误地引发TypeError
(GH 30063) -
当存在重复索引时,在
Series.pct_change()
和DataFrame.pct_change()
中的错误(GH 30463) -
在
DataFrame
累积操作(例如 cumsum,cummax)中的错误,将不正确地转换为 object-dtype(GH 19296) -
diff
中的错误导致扩展类型丢失 dtype(GH 30889) -
DataFrame.diff
中的错误在其中一个列是可空整数 dtype 时引发IndexError
(GH 30967)
转换
字符串
- 在空
Series
上调用Series.str.isalnum()
(以及其他“ismethods”)将返回object
dtype 而不是bool
([GH 29624](https://github.com/pandas-dev/pandas/issues/29624)
区间
-
在
IntervalIndex.get_indexer()
中的错误,其中Categorical
或CategoricalIndex
target
会错误地引发TypeError
(GH 30063) -
在
pandas.core.dtypes.cast.infer_dtype_from_scalar
中的错误,传递pandas_dtype=True
未推断出IntervalDtype
(GH 30337) -
在
Series
构造函数中存在的错误,从Interval
对象的list
构造Series
导致结果为object
dtype 而不是IntervalDtype
(GH 23563) -
在
IntervalDtype
中存在的错误,其中kind
属性错误地设置为None
而不是"O"
(GH 30568) -
在区间数据的
IntervalIndex
、IntervalArray
和Series
中存在的错误,导致相等比较不正确(GH 24112)
索引
-
在使用反向切片的赋值中存在的错误(GH 26939)
-
在存在索引重复项的情况下,
DataFrame.explode()
会复制帧(GH 28010) -
在使用另一类型索引重新索引
PeriodIndex()
时存在的错误,该索引包含Period
(GH 28323)(GH 28337) -
通过
.loc
进行列赋值时,存在使用 numpy 非纳秒日期时间类型的错误(GH 27395) -
在
Float64Index.astype()
中存在的错误,在将np.inf
强制转换为整数 dtype 时未正确处理(GH 28475) -
当左侧包含重复值时,
Index.union()
可能会失败(GH 28257) -
在使用
.loc
索引时存在的错误,其中索引是具有非字符串类别的CategoricalIndex
时不起作用(GH 17569,GH 30225) -
Index.get_indexer_non_unique()
在某些情况下可能会出现TypeError
,例如在字符串索引中搜索整数时(GH 28257) -
当
Float64Index.get_loc()
中存在错误引发TypeError
而不是KeyError
时,存在错误(GH 29189) -
在设置单行 DataFrame 中的 Categorical 值时,
DataFrame.loc()
中存在 dtype 错误(GH 25495) -
当输入包含缺失值时,
MultiIndex.get_loc()
无法找到缺失值(GH 19132) -
当新数据的长度与
True
值的数量相匹配且新数据不是Series
或np.array
时,Series.__setitem__()
中存在错误分配值的布尔索引器(GH 30567) -
使用
PeriodIndex
进行索引时存在错误,错误地接受表示年份的整数,应该使用例如ser.loc["2007"]
而不是ser.loc[2007]
(GH 30763)
缺失
多重索引
-
当
verify_integrity
参数为True
(默认值)时,MultiIndex
的构造函数验证给定的sortorder
是否与实际的lexsort_depth
兼容(GH 28735) -
当标签不在给定级别中时,Series 和 MultiIndex 的
.drop
会引发异常(GH 8594)
输入/输出
-
read_csv()
现在在使用 Python csv 引擎时接受二进制模式文件缓冲区(GH 23779) -
DataFrame.to_json()
存在错误,当使用元组作为列或索引值并且使用orient="columns"
或orient="index"
时,会产生无效的 JSON(GH 20500) -
改进了无穷大的解析。
read_csv()
现在将Infinity
、+Infinity
、-Infinity
解释为浮点值(GH 10065) -
当
na_rep
的长度短于文本输入数据时,DataFrame.to_csv()
中存在错误截断值的情况(GH 25099) -
Bug in
DataFrame.to_string()
使用显示选项截断值而不是输出完整内容(GH 9784) -
Bug in
DataFrame.to_json()
使用orient="table"
时,日期时间列标签不会以 ISO 格式输出(GH 28130) -
Bug in
DataFrame.to_parquet()
使用engine='fastparquet'
写入 GCS 时,如果文件不存在,则会失败(GH 28326) -
Bug in
read_hdf()
当引发异常时关闭未打开的存储(GH 28699) -
Bug in
DataFrame.read_json()
使用orient="index"
时不会保持顺序(GH 28557) -
Bug in
DataFrame.to_html()
formatters
参数的长度未经验证(GH 28469) -
Bug in
DataFrame.read_excel()
使用engine='ods'
时,当sheet_name
参数引用一个不存在的工作表时(GH 27676) -
Bug in
pandas.io.formats.style.Styler()
对浮点值的格式化未正确显示小数位数(GH 13257) -
Bug in
DataFrame.to_html()
在同时使用formatters=<list>
和max_cols
时。(GH 25955) -
Bug in
Styler.background_gradient()
无法与 dtypeInt64
一起工作(GH 28869) -
Bug in
DataFrame.to_clipboard()
无法在 ipython 中可靠工作(GH 22707) -
Bug in
read_json()
默认编码未设置为utf-8
(GH 29565) -
Bug in
PythonParser
处理十进制字段时,混合使用 str 和 bytes(GH 29650) -
read_gbq()
现在接受progress_bar_type
参数,在数据下载时显示进度条。(GH 29857) -
pandas.io.json.json_normalize()
中的错误,当record_path
指定的位置缺失值时会引发TypeError
(GH 30148) -
read_excel()
现在接受二进制数据(GH 15914) -
read_csv()
中的错误,编码处理仅限于 C 引擎的字符串utf-16
(GH 24130)
绘图
-
Series.plot()
中的错误无法绘制布尔值(GH 23719) -
DataFrame.plot()
中的错误无法在没有行时绘制图表(GH 27758) -
DataFrame.plot()
中的错误,在同一轴上绘制多个系列时产生不正确的图例标记(GH 18222) -
DataFrame.plot()
中的错误,当kind='box'
且数据包含日期时间或时间间隔数据时。这些类型现在会自动删除(GH 22799) -
DataFrame.plot.line()
和DataFrame.plot.area()
中的错误会在 x 轴上产生错误的 xlim(GH 27686, GH 25160, GH 24784) -
DataFrame.boxplot()
中的错误不接受color
参数,就像DataFrame.plot.box()
一样(GH 26214) -
xticks
参数在DataFrame.plot.bar()
中被忽略的错误(GH 14119) -
set_option()
现在验证提供给'plotting.backend'
的绘图后端在设置选项时是否实现了该后端,而不是在创建绘图时实现(GH 28163) -
DataFrame.plot()
现在允许使用backend
关键字参数在一个会话中在不同的后端之间切换(GH 28619). -
颜色验证中的错误,错误地对非颜色样式进行引发(GH 29122).
-
允许
DataFrame.plot.scatter()
绘制objects
和datetime
类型的数据(GH 18755, GH 30391) -
DataFrame.hist()
中的错误,xrot=0
与by
和子图不兼容(GH 30288).
GroupBy/resample/rolling
-
core.groupby.DataFrameGroupBy.apply()
中的错误,当函数返回一个Index
时,只显示单个组的输出(GH 28652) -
DataFrame.groupby()
中的错误,当存在多个组时,如果任何组包含所有 NA 值,则会引发IndexError
(GH 20519) -
Resampler.size()
和Resampler.count()
中的错误,在与空的Series
或DataFrame
一起使用时返回错误的 dtype(GH 28427) -
DataFrame.rolling()
中的错误,当axis=1
时,不允许在日期时间上滚动(GH 28192) -
在
DataFrame.rolling()
不允许在多级索引级别上滚动的错误(GH 15584) -
在单调递减的时间索引上使用
DataFrame.rolling()
时会出现的错误(GH 19248) -
当
axis=1
时,DataFrame.groupby()
中未提供按列名选择的错误(GH 27614) -
core.groupby.DataFrameGroupby.agg()
无法使用带有命名聚合的 lambda 函数的错误(GH 27519) -
在通过分类列分组时,
DataFrame.groupby()
会丢失列名信息的错误(GH 28787) -
在
DataFrame.groupby()
和Series.groupby()
中,命名聚合中的重复输入函数引发的错误已被删除。以前,如果在相同的列上应用了相同的函数,将会引发错误,现在如果新分配的名称不同,则允许使用(GH 28426) -
core.groupby.SeriesGroupBy.value_counts()
即使在Grouper
生成空组时也能处理的错误(GH 28479) -
在分组内使用时,
core.window.rolling.Rolling.quantile()
忽略interpolation
关键字参数的错误(GH 28779) -
在
DataFrame.groupby()
中存在的错误,会导致any
、all
、nunique
和 transform 函数不正确处理重复的列标签(GH 21668) -
修复了具有时区感知的 datetime64 列的
core.groupby.DataFrameGroupBy.agg()
在不正确地将结果转换为原始 dtype 的错误 (GH 29641) -
修复了在使用 axis=1 并且有单级列索引时
DataFrame.groupby()
的错误 (GH 30208) -
修复了在使用 axis=1 时
DataFrame.groupby()
上的 nunique 的错误 (GH 30253) -
修复了具有多个类似列表的 q 值和整数列名时
DataFrameGroupBy.quantile()
和SeriesGroupBy.quantile()
的错误 (GH 30289) -
修复了在
fill_method
为None
时DataFrameGroupBy.pct_change()
和SeriesGroupBy.pct_change()
导致TypeError
的错误 (GH 30463) -
修复了
Rolling.count()
和Expanding.count()
参数中的错误,min_periods
被忽略了 (GH 26996)
重塑
-
修复了
DataFrame.apply()
中的错误,在空的DataFrame
中导致了不正确的输出 (GH 28202, GH 21959) -
修复了
DataFrame.stack()
在创建 MultiIndex 时没有正确处理非唯一索引的错误 (GH 28301) -
修复了
pivot_table()
在margins=True
和aggfunc='mean'
时没有返回正确类型float
的错误 (GH 24893) -
Bug
merge_asof()
不能使用datetime.timedelta
作为tolerance
参数 (GH 28098) -
在
merge()
中存在 Bug,没有正确地附加后缀到 MultiIndex 中 (GH 28518) -
qcut()
和cut()
现在处理布尔型输入 (GH 20303) -
修复确保所有 int 类型都可以在
merge_asof()
中使用容差值。之前,每个非 int64 类型都会引发错误的MergeError
(GH 28870). -
在
get_dummies()
中提供更好的错误消息,当columns
不是类似列表的值时 (GH 28383) -
在
Index.join()
中存在 Bug,导致不匹配的MultiIndex
名称顺序时出现无限递归错误。 (GH 25760, GH 28956) -
Bug
Series.pct_change()
在提供锚定频率时会抛出ValueError
(GH 28664) -
DataFrame.equals()
存在一个 Bug,在某些情况下错误地返回 True,当两个 DataFrame 的列以不同顺序相同时 (GH 28839) -
在
DataFrame.replace()
中存在 Bug,导致非数值替换项的 dtype 未被尊重 (GH 26632) -
在
melt()
中存在 Bug,当为id_vars
或value_vars
提供混合字符串和数值时,会错误地引发ValueError
(GH 29718) -
当转置一个每列都是相同扩展 dtype 的
DataFrame
时,现在会保留 dtype (GH 30091) -
在具有 tz-aware
left_index
和 tz-aware 列的情况下,在merge_asof()
上合并的错误已修复 (GH 29864) -
在
labels=True
时,在cut()
和qcut()
中的错误消息和文档字符串已改进 (GH 13318) -
使用列表级别时,
DataFrame.unstack()
中缺失的fill_na
参数的错误已修复 (GH 30740)
Sparse
-
SparseDataFrame
中的算术操作错误地将输入转换为浮点数的错误已修复 (GH 28107) -
在存在命名为
sparse
的列而不是访问器时,DataFrame.sparse
返回Series
的错误已修复 (GH 30758) -
使用布尔类型
SparseArray
的operator.xor()
的错误已修复。现在返回稀疏结果,而不是对象 dtype (GH 31025)
ExtensionArray
-
在设置标量字符串时出现的
arrays.PandasArray
中的错误已修复 (GH 28118, GH 28150)。 -
可空整数无法与字符串进行比较的错误已修复 (GH 28930)
-
DataFrame
构造函数在使用类似列表的数据和指定dtype
时引发ValueError
的错误已修复 (GH 30280)
其他
-
尝试使用
set_option()
设置display.precision
、display.max_rows
或display.max_columns
为非None
或正整数时将引发ValueError
(GH 23348) -
在嵌套字典中使用
DataFrame.replace()
并且键发生重叠时将不再引发错误,现在与平坦字典的行为一致 (GH 27660) -
DataFrame.to_csv()
和Series.to_csv()
现在支持将字典作为compression
参数,键'method'
是压缩方法,其他键是额外的压缩选项,当压缩方法为'zip'
时 (GH 26023) -
在
Series.diff()
中存在一个 Bug,当布尔系列会错误地引发TypeError
时 (GH 17294) -
当传递一个
Series
的元组时,Series.append()
不再引发TypeError
(GH 28410) -
在调用
pandas.libs._json.encode()
时修复了错误消息损坏的问题,该函数作用于 0 维数组 (GH 18878) -
在
DataFrame.query()
和DataFrame.eval()
中,现在还可以使用反引号引用来使用无效标识符,如以数字开头的名称,python 关键字或使用单字符运算符。 (GH 27017) -
在
pd.core.util.hashing.hash_pandas_object
中存在一个 Bug,其中包含元组的数组被错误地视为不可散列 (GH 28969) -
在使用空列表追加时,
DataFrame.append()
引发IndexError
的 Bug (GH 28769) -
修复了
AbstractHolidayCalendar
在 2030 年后返回正确结果的问题(现在可延续到 2200 年) (GH 27790) -
修复了
IntegerArray
在除以0
时返回inf
而不是NaN
的问题 (GH 27398) -
当另一个值为
0
或1
时,修复了IntegerArray
的pow
运算问题 (GH 29997) -
在启用 use_inf_as_na 时,
Series.count()
引发错误 (GH 29478) -
在
Index
中存在一个 Bug,非可散列名称可以设置而不引发TypeError
(GH 29069) -
在通过传递二维
ndarray
和扩展 dtype 时,DataFrame
构造函数中存在一个 Bug (GH 12513) -
在向
DataFrame.to_csv()
提供具有dtype="string"
和na_rep
的系列时存在 Bug,na_rep
被截断为 2 个字符。 (GH 29975) -
DataFrame.itertuples()
中的错误,错误地确定是否可以为 255 列的数据框使用命名元组(GH 28282) -
处理嵌套的 NumPy
object
数组在testing.assert_series_equal()
中用于 ExtensionArray 实现(GH 30841)
贡献者
总共有 308 人为此版本贡献了补丁。名字后面带有“+”的人第一次贡献了补丁。
-
Aaditya Panikath +
-
Abdullah İhsan Seçer
-
Abhijeet Krishnan +
-
Adam J. Stewart
-
Adam Klaum +
-
Addison Lynch
-
Aivengoe +
-
Alastair James +
-
Albert Villanova del Moral
-
Alex Kirko +
-
Alfredo Granja +
-
Allen Downey
-
Alp Arıbal +
-
Andreas Buhr +
-
Andrew Munch +
-
Andy
-
Angela Ambroz +
-
Aniruddha Bhattacharjee +
-
Ankit Dhankhar +
-
Antonio Andraues Jr +
-
Arda Kosar +
-
Asish Mahapatra +
-
Austin Hackett +
-
Avi Kelman +
-
AyowoleT +
-
Bas Nijholt +
-
Ben Thayer
-
Bharat Raghunathan
-
Bhavani Ravi
-
Bhuvana KA +
-
Big Head
-
Blake Hawkins +
-
Bobae Kim +
-
Brett Naul
-
Brian Wignall
-
Bruno P. Kinoshita +
-
Bryant Moscon +
-
Cesar H +
-
Chris Stadler
-
Chris Zimmerman +
-
Christopher Whelan
-
Clemens Brunner
-
Clemens Tolboom +
-
Connor Charles +
-
Daniel Hähnke +
-
Daniel Saxton
-
Darin Plutchok +
-
Dave Hughes
-
David Stansby
-
DavidRosen +
-
Dean +
-
Deepan Das +
-
Deepyaman Datta
-
DorAmram +
-
Dorothy Kabarozi +
-
Drew Heenan +
-
Eliza Mae Saret +
-
Elle +
-
Endre Mark Borza +
-
Eric Brassell +
-
Eric Wong +
-
Eunseop Jeong +
-
Eyden Villanueva +
-
Felix Divo
-
ForTimeBeing +
-
Francesco Truzzi +
-
Gabriel Corona +
-
Gabriel Monteiro +
-
Galuh Sahid +
-
Georgi Baychev +
-
Gina
-
GiuPassarelli +
-
Grigorios Giannakopoulos +
-
Guilherme Leite +
-
Guilherme Salomé +
-
Gyeongjae Choi +
-
Harshavardhan Bachina +
-
Harutaka Kawamura +
-
Hassan Kibirige
-
Hielke Walinga
-
Hubert
-
Hugh Kelley +
-
Ian Eaves +
-
Ignacio Santolin +
-
Igor Filippov +
-
Irv Lustig
-
Isaac Virshup +
-
Ivan Bessarabov +
-
JMBurley +
-
Jack Bicknell +
-
Jacob Buckheit +
-
Jan Koch
-
Jan Pipek +
-
Jan Škoda +
-
Jan-Philip Gehrcke
-
Jasper J.F. van den Bosch +
-
Javad +
-
Jeff Reback
-
Jeremy Schendel
-
Jeroen Kant +
-
Jesse Pardue +
-
Jethro Cao +
-
Jiang Yue
-
Jiaxiang +
-
Jihyung Moon +
-
Jimmy Callin
-
Jinyang Zhou +
-
Joao Victor Martinelli +
-
Joaq Almirante +
-
John G Evans +
-
John Ward +
-
Jonathan Larkin +
-
Joris Van den Bossche
-
Josh Dimarsky +
-
Joshua Smith +
-
Josiah Baker +
-
Julia Signell +
-
Jung Dong Ho +
-
Justin Cole +
-
Justin Zheng
-
Kaiqi Dong
-
Karthigeyan +
-
Katherine Younglove +
-
Katrin Leinweber
-
Kee Chong Tan +
-
Keith Kraus +
-
Kevin Nguyen +
-
Kevin Sheppard
-
Kisekka David +
-
Koushik +
-
Kyle Boone +
-
Kyle McCahill +
-
Laura Collard, PhD +
-
刘寻找者 +
-
Louis Huynh +
-
Lucas Scarlato Astur +
-
Luiz Gustavo +
-
Luke +
-
Luke Shepard +
-
MKhalusova +
-
Mabel Villalba
-
Maciej J +
-
麦思成
-
Manu NALEPA +
-
Marc
-
Marc Garcia
-
Marco Gorelli +
-
Marco Neumann +
-
Martin Winkel +
-
Martina G. Vilas +
-
Mateusz +
-
Matthew Roeschke
-
Matthew Tan +
-
Max Bolingbroke
-
Max Chen +
-
MeeseeksMachine
-
Miguel +
-
MinGyo Jung +
-
Mohamed Amine ZGHAL +
-
Mohit Anand +
-
MomIsBestFriend +
-
Naomi Bonnin +
-
Nathan Abel +
-
Nico Cernek +
-
Nigel Markey +
-
Noritada Kobayashi +
-
Oktay Sabak +
-
Oliver Hofkens +
-
Oluokun Adedayo +
-
Osman +
-
Oğuzhan Öğreden +
-
Pandas Development Team +
-
Patrik Hlobil +
-
Paul Lee +
-
Paul Siegel +
-
Petr Baev +
-
Pietro Battiston
-
Prakhar Pandey +
-
Puneeth K +
-
Raghav +
-
Rajat +
-
Rajhans Jadhao +
-
Rajiv Bharadwaj +
-
Rik-de-Kort +
-
Roei.r
-
Rohit Sanjay +
-
Ronan Lamy +
-
Roshni +
-
Roymprog +
-
Rushabh Vasani +
-
Ryan Grout +
-
Ryan Nazareth
-
Samesh Lakhotia +
-
Samuel Sinayoko
-
Samyak Jain +
-
Sarah Donehower +
-
Sarah Masud +
-
Saul Shanabrook +
-
Scott Cole +
-
SdgJlbl +
-
Seb +
-
Sergei Ivko +
-
沙迪·阿基基
-
Shorokhov Sergey
-
Siddhesh Poyarekar +
-
Sidharthan Nair +
-
Simon Gibbons
-
Simon Hawkins
-
Simon-Martin Schröder +
-
Sofiane Mahiou +
-
Sourav kumar +
-
Souvik Mandal +
-
Soyoun Kim +
-
Sparkle Russell-Puleri +
-
Srinivas Reddy Thatiparthy (斯里尼瓦斯·雷迪·塔蒂帕蒂)
-
Stuart Berg +
-
Sumanau Sareen
-
Szymon Bednarek +
-
Tambe Tabitha Achere +
-
Tan Tran
-
唐鹤一 +
-
Tanmay Daripa +
-
Tanya Jain
-
Terji Petersen
-
Thomas Li +
-
Tirth Jain +
-
Tola A +
-
Tom Augspurger
-
Tommy Lynch +
-
Tomoyuki Suzuki +
-
Tony Lorenzo
-
Unprocessable +
-
乌韦·L·科恩
-
Vaibhav Vishal
-
Victoria Zdanovskaya +
-
Vijayant +
-
Vishwak Srinivasan +
-
王艾勇
-
文欢
-
韦斯·麦金尼
-
Will Ayd
-
威尔·霍姆格伦
-
William Ayd
-
William Blan +
-
Wouter Overmeire
-
Wuraola Oyewusi +
-
YaOzI +
-
Yash Shukla +
-
余旺 +
-
Yusei Tahara +
-
alexander135 +
-
alimcmaster1
-
avelineg +
-
bganglia +
-
bolkedebruin
-
bravech +
-
chinhwee +
-
cruzzoe +
-
dalgarno +
-
daniellebrown +
-
danielplawrence
-
est271 +
-
francisco souza +
-
ganevgv +
-
garanews +
-
gfyoung
-
h-vetinari
-
hasnain2808 +
-
ianzur +
-
jalbritt +
-
jbrockmendel
-
jeschwar +
-
jlamborn324 +
-
joy-rosie +
-
kernc
-
killerontherun1
-
krey +
-
lexy-lixinyu +
-
lucyleeow +
-
lukasbk +
-
maheshbapatu +
-
mck619 +
-
nathalier
-
naveenkaushik2504 +
-
nlepleux +
-
nrebena
-
ohad83 +
-
pilkibun
-
pqzx +
-
proost +
-
pv8493013j +
-
qudade +
-
rhstanton +
-
rmunjal29 +
-
sangarshanan +
-
sardonick +
-
saskakarsi +
-
shaido987 +
-
ssikdar1
-
steveayers124 +
-
tadashigaki +
-
timcera +
-
tlaytongoogle +
-
tobycheese
-
tonywu1999 +
-
tsvikas +
-
yogendrasoni +
-
zys5945 +
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-06-26 Bert Pytorch 源码分析:五、模型架构简图
2023-06-26 Bert Pytorch 源码分析:四、编解码器
2023-06-26 Bert Pytorch 源码分析:三、Transformer块
2020-06-26 PythonGuru 中文系列教程·翻译完成