熊猫数据框列计算
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
的警告。可能显示的代码不是他实际使用的代码。以上是关于熊猫数据框列计算的主要内容,如果未能解决你的问题,请参考以下文章