我有一个数据框架,我通过访问具有空值的行来缩小范围。我想根据一种食物的年龄中位数来填充这些空值。
<表类>
年龄
最喜欢的食物
tbody><<tr>1 南 35 南 比萨 174 南道明> 176 南 糖果 … 南 … 表类>
您可以使用pandas
中的fillna
和map
方法轻松实现这一点:
# 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