我正在尝试pandas使用简单的函数来就地更改我的一个列.
在阅读完整个Dataframe之后,我尝试在一个Serie上应用函数:
wanted_data.age.apply(lambda x: x+1)
Run Code Online (Sandbox Code Playgroud)
它工作得很好.当我尝试将其放回我的DataFrame时,唯一的问题是:
wanted_data.age = wanted_data.age.apply(lambda x: x+1)
Run Code Online (Sandbox Code Playgroud)
要么:
wanted_data['age'] = wanted_data.age.apply(lambda x: x+1)
Run Code Online (Sandbox Code Playgroud)
抛出以下警告:
> 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
Run Code Online (Sandbox Code Playgroud)
当然,我可以使用以下的长形式设置DataFrame:
wanted_data.loc[:, 'age'] = wanted_data.age.apply(lambda x: x+1)
Run Code Online (Sandbox Code Playgroud)
但是,没有其他更容易和更语法更好的方法吗?
谢谢!
Ale*_*der 11
用途loc:
wanted_data.loc[:, 'age'] = wanted_data.age.apply(lambda x: x + 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14911 次 |
| 最近记录: |