Python:Pandas Dataframe 如何将整个列与标量相乘

新手上路,请多包涵

如何将数据框给定列的每个元素与标量相乘? (我试过寻找 SO,但似乎找不到正确的解决方案)

做类似的事情:

 df['quantity'] *= -1 # trying to multiply each row's quantity column with -1

给我一个警告:

 A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

注意:如果可能的话,我不想遍历数据帧并做这样的事情……因为我认为整个列上的任何标准数学运算都应该是可能的,而不必编写循环:

 for idx, row in df.iterrows():
    df.loc[idx, 'quantity'] *= -1

编辑

我正在运行 Pandas 的 0.16.2

完整跟踪:

  SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self.obj[item] = s

原文由 labheshr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 313
2 个回答

这是经过一些研究后的答案:

 df.loc[:,'quantity'] *= -1 #seems to prevent SettingWithCopyWarning

原文由 labheshr 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试使用应用功能。

 df['quantity'] = df['quantity'].apply(lambda x: x*-1)

原文由 maswadkar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题