如何按玩具类别用对应最频繁颜色填充DataFrame缺失值?
按玩具分组填充颜色缺失值的实现方法
首先修正你提供的示例代码里的错误:color列里的np应该是np.nan,否则会导致数据类型混乱,修正后的代码如下:
import pandas as pd import numpy as np df = pd.DataFrame({ 'toy':['car'] * 4 + ['train'] * 5 + ['ball'] * 3 + ['truck'], 'color':['red', 'blue', 'blue', np.nan, 'green', np.nan, 'red', 'red', np.nan, 'blue', 'red', np.nan, 'green'] })
接下来直接实现按玩具的最频繁颜色填充缺失值,一行核心代码就能搞定:
# 按toy分组,用每组颜色的众数填充本组缺失值 df['color'] = df.groupby('toy')['color'].transform(lambda x: x.fillna(x.mode()[0]))
代码说明
groupby('toy'):将数据按玩具类型分组transform:保证分组处理后结果的索引和原DataFrame对齐x.mode()[0]:获取当前组颜色的众数(最频繁出现的颜色),加[0]是为了避免多个众数时返回Series的情况,直接取第一个众数填充
比如car组的颜色是red, blue, blue, NaN,众数是blue,缺失值会被填充为blue;train组的颜色是green, NaN, red, red, NaN,众数是red,两个缺失值都会被替换成red。
内容的提问来源于stack exchange,提问作者Amrit Shrivastava
相关产品推荐
相关产品推荐

