我有一个小数据帧,比如说这个:
Mass32 Mass44
12 0.576703 0.496159
13 0.576658 0.495832
14 0.576703 0.495398
15 0.576587 0.494786
16 0.576616 0.494473
...
我希望列 Mass32
的滚动平均值,所以我这样做:
x['Mass32s'] = pandas.rolling_mean(x.Mass32, 5).shift(-2)
它有效,因为我有一个名为 Mass32s
的新列,其中包含我希望它包含的内容,但我也收到警告消息:
正在尝试在DataFrame的切片副本上设置值 . 尝试使用.loc [row_indexer,col_indexer] = value而不是查看文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
我想知道是否有更好的方法来做到这一点,特别是避免得到这个警告信息 .
1 回答
出现此警告是因为您的数据框
x
是切片的副本 . 这不容易知道为什么,但它与你如何达到它的当前状态有关 .您可以通过执行从x创建正确的
dataframe
这将删除警告,但它是 not the proper way
您应该使用
DataFrame.loc
方法,如警告所示,如下所示: