pandas.DataFrame.shift()fill_value不起作用

时间:2019-04-13 06:18:49

标签: python pandas dataframe

这听起来像是一个很奇怪的问题,但是当我将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

但是会引发错误。有人会知道是什么问题吗?我在其他地方搜索过,但似乎没有其他人遇到此问题...

1 个答案:

答案 0 :(得分:2)

问题是使用熊猫波纹管0.24+,而在DataFrame.shift中没有使用此参数。

  

填充值:对象,可选

     

用于新引入的缺失值的标量值。默认值取决于self的dtype。对于数字数据,使用np.nan。对于日期时间,时间增量或期间数据等,使用NaT。对于扩展名dtypes,使用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