Pandas df.interpolate(inplace=True)函数是如何实现的?

Pandas df.interpolate(inplace=True)函数是如何实现的?,pandas,dataframe,filter,inplace-editing,Pandas,Dataframe,Filter,Inplace Editing,我很难理解它是如何工作的。当inplace=True时,函数不输出任何内容,原始df保持不变。这是怎么回事 很抱歉,我在第一篇文章中写了“过滤器”。那是一个非常愚蠢的错误 根据@Alex的要求,示例如下: df = pd.DataFrame(np.random.randn(4,3), columns=map(chr, range(65,68))) df['B'] = np.nan print df print df.interpolate(axis=1) print df print df.in

我很难理解它是如何工作的。当inplace=True时,函数不输出任何内容,原始df保持不变。这是怎么回事

很抱歉,我在第一篇文章中写了“过滤器”。那是一个非常愚蠢的错误

根据@Alex的要求,示例如下:

df = pd.DataFrame(np.random.randn(4,3), columns=map(chr, range(65,68)))
df['B'] = np.nan
print df
print df.interpolate(axis=1)
print df
print df.interpolate(axis=1, inplace=True)
print df
     A       B         C
0 -0.956273 NaN  0.919723
1  1.127298 NaN -0.585326
2 -0.045163 NaN -0.946355
3 -1.375863 NaN -1.279663

      A         B         C
0 -0.956273 -0.018275  0.919723
1  1.127298  0.270986 -0.585326
2 -0.045163 -0.495759 -0.946355
3 -1.375863 -1.327763 -1.279663

      A   B         C
0 -0.956273 NaN  0.919723
1  1.127298 NaN -0.585326
2 -0.045163 NaN -0.946355
3 -1.375863 NaN -1.279663

None

      A   B         C
0 -0.956273 NaN  0.919723
1  1.127298 NaN -0.585326
2 -0.045163 NaN -0.946355
3 -1.375863 NaN -1.279663
结果如下:

df = pd.DataFrame(np.random.randn(4,3), columns=map(chr, range(65,68)))
df['B'] = np.nan
print df
print df.interpolate(axis=1)
print df
print df.interpolate(axis=1, inplace=True)
print df
     A       B         C
0 -0.956273 NaN  0.919723
1  1.127298 NaN -0.585326
2 -0.045163 NaN -0.946355
3 -1.375863 NaN -1.279663

      A         B         C
0 -0.956273 -0.018275  0.919723
1  1.127298  0.270986 -0.585326
2 -0.045163 -0.495759 -0.946355
3 -1.375863 -1.327763 -1.279663

      A   B         C
0 -0.956273 NaN  0.919723
1  1.127298 NaN -0.585326
2 -0.045163 NaN -0.946355
3 -1.375863 NaN -1.279663

None

      A   B         C
0 -0.956273 NaN  0.919723
1  1.127298 NaN -0.585326
2 -0.045163 NaN -0.946355
3 -1.375863 NaN -1.279663
如您所见,第一次插值创建了原始数据帧的副本。我想要的是插入并更新原始数据帧,因此我尝试了
inplace
,因为文档中说明了以下内容:

就地:bool,默认为False 如有可能,将NDFrame更新到位。

第二次插值没有返回任何值,也没有更新原始数据帧。所以我很困惑


正如@joris所要求的,我的pandas版本是
'0.15.1'
。虽然这个请求是由于我的错误…

您有什么版本的熊猫?我得到了“filter()得到了一个意外的关键字参数'inplace'”@Alex一个例子updated@joris我搞错了,是插值,不是滤波。但是,是否有可能只过滤掉原始数据帧子集的一个视图?这可能是一个bug。我无法使用当前版本的pandas进行复制,inplace参数工作正常。