如何遍历Pandas DataFrame重复分组并使用分组众数填充NaN缺失值
实现方案
方法1:显式遍历每个分组
符合你需要的for循环遍历分组的需求,代码如下:
# 按val1、val3组合拆分成分组 for (group_val1, group_val3), partition in temp_df.groupby(['val1', 'val3']): # 打印当前分组 print(f"分组val1={group_val1}、val3={group_val3}:") print(partition) print("-"*30) # 计算当前分组val2列的众数,取第一个众数处理多众数场景 val2_mode = partition['val2'].mode()[0] # 填充当前分组内val2的NaN值 partition['val2'].fillna(val2_mode, inplace=True)
方法2:更高效的向量化写法(无需手动遍历)
如果只需要填充NaN不需要单独处理每个分组,直接用groupby+transform即可一步完成:
temp_df['val2'] = temp_df.groupby(['val1', 'val3'])['val2'].transform( # 若分组全为NaN可自定义默认填充值,这里示例默认填充0 lambda x: x.fillna(x.mode()[0] if not x.mode().empty else 0) )
填充后结果示例
id val1 val2 val3 0 0 1 1.0 2 1 1 1 4.0 2 2 2 1 4.0 2 3 3 1 4.0 2 5 5 3 7.0 3 6 6 3 7.0 3 7 7 3 7.0 3
内容的提问来源于stack exchange,提问作者simenojensen
相关产品推荐
相关产品推荐

