我正在尝试使用 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 许可协议
使用
loc
: