pandas.DataFrame.shift() fill_value不工作[英] pandas.DataFrame.shift() fill_value not working

本文是小编为大家收集整理的关于pandas.DataFrame.shift() fill_value不工作的处理方法,想解了pandas.DataFrame.shift() fill_value不工作的问题怎么解决?pandas.DataFrame.shift() fill_value不工作问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

这听起来可能是一个相当奇怪的问题,但是当我使用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 bellow 0.24+在 DataFrame.shift .

fill_value :对象,可选

用于新引入的缺失值的标量值.默认值取决于自我的dtype.对于数字数据,使用NP.NAN.对于DateTime,TimeDERTA或周期数据等.使用NAT.对于扩展dtypes,使用self.dtype.na_value.

在版本中更改 0.24.0 .

然后使用 DataFrame.fillna DataFrame.fillna :

df = df.shift(periods=1).fillna(0)

DataFrame.fillna 使用/a>如果可能的数据中的另一个缺失值,则仅替换它:

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

本文地址:https://www.itbaoku.cn/post/1727967.html