在 DataFrame 上应用函数后更改 Series

新手上路,请多包涵

我正在尝试使用 pandas 以便使用简单的函数就地更改我的其中一列。

在阅读了整个 Dataframe 之后,我尝试在一个 Series 上应用函数:

 wanted_data.age.apply(lambda x: x+1)

而且效果很好。唯一的问题发生在我尝试将其放回我的 DataFrame 时:

 wanted_data.age = wanted_data.age.apply(lambda x: x+1)

或者:

 wanted_data['age'] = wanted_data.age.apply(lambda x: x+1)

抛出以下警告:

 > C:\Anaconda\lib\site-packages\pandas\core\generic.py:1974:
> 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[name] = value

当然,我可以使用以下长格式设置 DataFrame:

 wanted_data.loc[:, 'age'] = wanted_data.age.apply(lambda x: x+1)

但是没有其他更简单、句法更好的方法吗?

谢谢!

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

阅读 439
2 个回答

使用 loc

 wanted_data.loc[:, 'age'] = wanted_data.age.apply(lambda x: x + 1)

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

我建议 wanted_data['age']= wanted_data['age'].apply(lambda x: x+1) ,然后将文件另存为 wanted_data.to_csv(fname,index=False) ,其中“fname”是要更新的文件的名称。

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

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