如何在Python的Pandas中按分组键填充DataFrame的缺失值?
按分组填充DataFrame缺失值的实现
你可以通过Pandas的groupby结合transform方法实现按分组填充缺失值的需求,具体代码如下:
import pandas as pd import numpy as np # 创建原始DataFrame ds1 = {'col1':[1,1,1,1,1,1,1, 2,2,2,2,2,2,2], "col2" : [1,np.NaN,np.NaN,np.NaN,np.NaN,np.NaN,np.NaN, np.NaN,np.NaN,np.NaN,np.NaN,np.NaN,np.NaN,3]} df1 = pd.DataFrame(data=ds1) # 按col1分组,用组内col2的非缺失值填充该组所有缺失值 df1['col2'] = df1.groupby('col1')['col2'].transform(lambda x: x.fillna(x.dropna().iloc[0])) # 打印填充后的结果 print(df1)
代码说明:
groupby('col1'):按照col1的取值对DataFrame进行分组transform(lambda x: x.fillna(x.dropna().iloc[0])):对每个分组的col2列执行填充操作——先筛选出该组的非缺失值,取第一个值(因每个组仅存在一个非空值),再用这个值填充组内所有NaN
如果后续场景中每个分组的非缺失值不止一个,还可以根据需求替换填充逻辑,比如用组内均值填充就把x.dropna().iloc[0]替换为x.mean()。
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

