You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas DataFrame按同Id聚合补全空值并处理A列多值冲突的实现

实现方法

首先先做数据预处理,将表格中的空白占位符统一转换为pandas可识别的空值类型:

import pandas as pd
import numpy as np

# 从文件导入的场景,把空格识别为空值
df = pd.read_csv('your_file.csv', na_values=[' '])
# 手动构造DataFrame的场景,用正则替换空白内容为空值
# df = df.replace(r'^\s*$', np.nan, regex=True)

核心分组聚合逻辑

自定义聚合规则,分别处理A列的冲突检测和其余列的空值补全:

def agg_func(group):
    # 处理A列:同组唯一非空值数量大于1则返回冲突标记'f',否则返回唯一值
    a_unique = group['A'].dropna().unique()
    res = {
        'A': 'f' if len(a_unique) > 1 else a_unique[0]
    }
    # 处理B、C、D列:取同组第一个非空值补全空值
    for col in ['B', 'C', 'D']:
        res[col] = group[col].dropna().iloc[0]
    return pd.Series(res)

# 按Id分组聚合得到结果
result = df.groupby('Id').apply(agg_func).reset_index()

效果验证

场景1:无A列冲突

输入符合你给出的第一个示例结构时,输出和预期完全一致:

Id A B C D
1  a b c d
2  a b c d
3  a b c d

场景2:存在A列冲突

输入符合你给出的第二个冲突示例结构时,输出和预期完全一致:

Id A B C D
1  a b c d
2  f b c d

如果需要调整冲突标记值,直接替换代码中的'f'为你指定的其他值即可。

内容的提问来源于stack exchange,提问作者Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:15:05