熊猫数据框列计算

Posted

技术标签:

【中文标题】熊猫数据框列计算【英文标题】:Pandas dataframe column calculation 【发布时间】:2015-01-28 00:31:49 【问题描述】:

我想通过计算(这是 comlun 值的乘积)替换列中的值。 像这样:

    df.loc[:, 'cfit'] = df['cfit'] * df['risk_nr']

我收到以下消息: 试图在 DataFrame 的切片副本上设置一个值。 尝试改用 .loc[row_indexer,col_indexer] = value 请参阅文档中的注意事项:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self.obj[item] = s

这是对 pandas 的正确还是错误的警告? 谢谢

【问题讨论】:

您运行的是什么版本的熊猫,您能否发布示例数据来重现您的问题,因为我不能 熊猫版本 0.15.1 【参考方案1】:

就这样吧:

df['cfit'] = df['cfit'] * df['risk_nr']

甚至:

df['cfit'] *= df['risk_nr']

关于您的问题:我认为在这种特殊情况下这是一个错误的警告,因为df.loc[:, 'cfit'] 应该返回一个视图而不是副本。您可以通过以下方式关闭警告:

pd.set_option('chained_assignment', None)

【讨论】:

我倾向于同意你的观点,即这是一个错误的警告。我以前见过这个警告,但它通常与不使用 .loc/row 索引的条件更新有关。 @BobHaffner,是的,我认为那里发生了其他事情,因为我没有收到简单的df.loc[:, 'colname'] = something 的警告。可能显示的代码不是他实际使用的代码。

以上是关于熊猫数据框列计算的主要内容,如果未能解决你的问题,请参考以下文章

如何迭代熊猫数据框列中的元素?

爆炸熊猫数据框列

熊猫地图数据框列

groupby之后的熊猫数据框列[重复]

如何将小时添加到熊猫数据框列

数据框列数据 - 熊猫 - python