使用字典根据另一列的值替换一列的空值



我有一个数据框架,我通过访问具有空值的行来缩小范围。我想根据一种食物的年龄中位数来填充这些空值。

<表类> 年龄 最喜欢的食物 tbody><<tr>1南35南比萨174南道明>176南糖果…南…

您可以使用pandas中的fillnamap方法轻松实现这一点:

# replace your_dict with dictionary mapping
df['age'] = df['age'].fillna(df['favorite-food'].map(your_dict))

这将根据您拥有的字典映射填充所有nan值。这可以直接在更大的数据帧上完成. 不需要只过滤nan


下面是一个基于你的数据的例子:

# generate the data
>> df = pd.DataFrame({'age':[np.nan,np.nan,np.nan], 'favorite-food': ['pizza','curry','candy']}, index=[1,35,174])
>> print(df)
age favorite-food
1    NaN         pizza
35   NaN         curry
174  NaN         candy
>> dictionary = {'pizza': 12.0, 'curry': 16.0, 'candy':10.0}
>> df['age'] = df['age'].fillna(df['favorite-food'].map(dictionary))
>> print(df)
age favorite-food
1    12.0         pizza
35   16.0         curry
174  10.0         candy

最新更新