在应用函数后,在DataFrame中更改系列

Inf*_*ity 18 python pandas

我正在尝试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)