如何有条件地替换Pandas中的NaN值?

时间:2018-01-27 14:35:18

标签: python pandas numpy

我使用着名的泰坦尼克号数据集来解决我的第一个Kaggle问题。我陷入了数据集困境。 我想替换Age性别的NaN值,例如“男性”缺失值应该被男性和反对的平均年龄所取代。 虽然我的代码运行正常,但获得如下异常: " SettingWithCopyWarning: 尝试在DataFrame的切片副本上设置值 请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy   self._update_inplace(NEW_DATA)"

import pandas as pd
df=pd.read_csv('train.csv')
df[(df['Sex']=='male') & (df['Age'].apply(np.isnan))]['Age'].fillna(df[df['Sex']=='male']['Age'].mean(),inplace=True)

1 个答案:

答案 0 :(得分:1)

import pandas as pd
import numpy as np

df = pd.read_csv('train.csv')
df['Age'].fillna(df.groupby(["Sex"])["Age"].transform(np.mean), inplace=True)

也许这是你想要做的事情?我没有得到任何警告。如有必要,请查看my blog post