python - pandas.DataFrame.shift() 填充值不起作用
问题描述
这听起来像是一个相当奇怪的问题,但是当我使用pandas.DataFrame.shift()
带有fill_value
关键字参数的函数时,我不断得到一个TypeError: shift() got an unexpected keyword argument 'fill_value'
.
即使是文档上的一个简单示例也给了我这个错误:
df = pd.DataFrame({'c1': [1, 2, 3],
'c2': [4, 5, 6],
'c3': [7, 8, 9]})
df.shift(periods=1, fill_value=0)
通常会预期
c1 c2 c3
0 0 0 0
1 1 4 7
2 2 5 8
3 3 6 9
但它会引发错误。有人会碰巧知道问题可能是什么吗?我在其他地方搜索过,但似乎没有其他人遇到这个问题......
解决方案
问题是使用 pandas bellow0.24+
没有在DataFrame.shift
.
填充值:对象,可选
用于新引入的缺失值的标量值。默认值取决于 self 的 dtype。对于数值数据,使用 np.nan。对于日期时间、时间增量或周期数据等,使用 NaT。对于扩展 dtype,使用 self.dtype.na_value。
在0.24.0版本中更改。
然后使用DataFrame.fillna
:
df = df.shift(periods=1).fillna(0)
或者,如果可能的话,通过数据中的另一个缺失值DataFrame.fillna
指定第一行,并且只替换它:DataFrame.iloc
df = df.shift(periods=1)
df.iloc[0] = df.iloc[0].fillna(0)
print (df)
c1 c2 c3
0 0.0 0.0 0.0
1 1.0 4.0 7.0
2 2.0 5.0 8.0
推荐阅读
- c# - 如何获取 API 控制器方法中使用的 JsonSerializerSettings
- r - 循环数据帧以创建新的数据帧
- c++ - 你可以在 C++ 中给模板成员起别名吗?
- javascript - 从 Git 子模块存储库导入 React 组件
- ios - 如何快速计算当前屏幕上的用户阅读活动?
- .net - 如何解决使用 PowerShell 脚本部署模板失败错误
- r - 在 Keras 中将层重塑为斜对称矩阵
- python-3.x - 如何在两个日志之间添加新行或分隔符
- oracle - Oracle:目录权限
- mysql - MYSQL 将一个表中的一个列连接到另一个表中的两个 count()