当前位置: 首页 > 知识库问答 >
问题:

设置数据帧中切片副本的值[重复]

卓星波
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
...

我想有一个列Mass32的滚动平均值,所以我这样做:

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

它的工作原理是,我有一个名为Mass32s的新列,其中包含我期望它包含的内容,但我也会收到警告消息:

试图在数据帧切片的副本上设置值。尝试改用.loc[row\u indexer,col\u indexer]=value

请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-查看与复制

我想知道是否有更好的方法来做到这一点,特别是避免收到这个警告信息。

共有1个答案

龙景澄
2023-03-14

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

您可以通过执行以下操作从x中创建适当的数据帧

x = x.copy()

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

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

x.loc[:,'Mass32s'] = pandas.rolling_mean(x.Mass32, 5).shift(-2)
 类似资料:
  • 问题内容: 我有一个小数据框,说这个: 我想要column的滚动平均值,所以我这样做: 它的工作方式如下:我有一个新的列,该列包含我希望包含的内容,但我也收到警告消息: 试图在DataFrame的切片副本上设置一个值。尝试改用.loc [row_indexer,col_indexer] = value 请参阅文档中的警告:http : //pandas.pydata.org/pandas-docs

  • 我试图初始化实例和传递数据帧但出于某种原因我得到的输出 尝试使用。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 知道我

  • 我想用Python对数据进行切片。分割数据帧的基本任务会给我带来意想不到的错误。 我的代码是: 代码应显示第二列的第二行。 错误消息: 文件“pandas_libs\hashtable_class_helper.pxi”,第1500行,在pandas中_图书馆。哈希表。PyObjectHashTable。get_项键错误:(1,1) 在处理上述异常期间,发生了另一个异常: 回溯(最近一次调用):文

  • 这是我的数据 我想一个接一个地标记数据帧。例如,对于index=3,目标是坏 基本上,我用我的专业知识一个接一个地拉出来 顺致敬意,

  • 我正在使用从h5文件加载的调查数据作为通过熊猫包。在此中,所有行都是单个调查的结果,而列是单个调查中所有问题的答案。 我的目标是将此数据集缩减为更小的,仅包括在某个问题上具有某个描述答案的行,即在本列中具有相同的值。我能够确定具有此条件的所有行的索引值,但我找不到如何删除这些行或仅使用这些行创建新的df。

  • 我有一个多索引数据框,看起来像 uid tid文本 abc x t1 bcd y t2 uid 和 tid 是索引。我有一个 uid 列表,并希望获取与该列表中的 uid 相对应的行,但保留第 2 级索引值 (tid)。我想在不运行任何显式循环的情况下执行此操作。这可能吗?