当前位置: 首页 > 面试题库 >

在来自DataFrame的切片副本上设置值

庞安晏
2023-03-14
问题内容

我有一个小数据框,说这个:

    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
...

我想要column的滚动平均值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

我想知道是否有更好的方法来做到这一点,尤其是避免收到此警告消息。


问题答案:

出现此警告是因为您的数据框x是切片的副本。这不容易理解为什么,但是与您如何达到当前状态有关。

您可以dataframe通过执行以下操作来创建适当的x

x = x.copy()

这将删除警告,但这 不是正确的方法

DataFrame.loc如警告所示,您应该使用该方法,如下所示:

x.loc[:,'Mass32s'] = pandas.rolling_mean(x.Mass32, 5).shift(-2)


 类似资料:
  • 问题内容: Jupiter Nootbook返回此警告: 请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus- copy 请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs/stable/indexing.html#inde

  • 我有一个小数据框,比如说: 我想有一个列的滚动平均值,所以我这样做: 它的工作原理是,我有一个名为的新列,其中包含我期望它包含的内容,但我也会收到警告消息: 试图在数据帧切片的副本上设置值。尝试改用.loc[row\u indexer,col\u indexer]=value 请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/index

  • 我知道有很多关于这个警告的帖子,但是我找不到解决我的问题的办法。这是我的密码: 它产生警告: SettingWithCopyWarning:试图在数据帧切片的副本上设置值。尝试改用.loc[row\u indexer,col\u indexer]=value 即使我按照建议更改了代码,我仍然收到此警告?我所需要做的就是转换一列的数据类型。 **备注:**最初该列是具有一个十进制的浮点数类型(例如:

  • 问题内容: 我有一个熊pandas据框:数据。它具有列[“ name”,’A’,’B’] 我想做的(和可以做的)是: 这会将表行上的A列设置为0。我还完成了以下操作: 但是,两者都给我同样的警告: pandas如何让我做到这一点? 问题答案: 这是熊猫的一种非常普遍的警告。这意味着您正在写副本切片,而不是原始数据,因此由于混淆的链式分配,它可能不适用于原始列。请阅读这篇文章。它对此进行了详细的讨论

  • 我试图初始化实例和传递数据帧但出于某种原因我得到的输出 尝试使用。loc[row\u indexer,col\u indexer]=改为value 请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-vs-a-copy self。x[‘截距’]=1 知道我

  • 如何(在终端中)打印pandas数据帧中列的子集? 我不想从DataFrame中删除任何列;我只想看看终端中的几个列,了解一下数据是如何通过的。 现在,我有,它打印数据帧的前10行,但如何选择几列进行打印呢?您能根据列的索引编号和/或名称选择列吗?