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

如何将含重复ID的大型DataFrame聚合为唯一ID单条记录?

解决重复ID的DataFrame信息聚合问题

没问题,这个需求用Pandas就能轻松实现!我们的目标是把同一Id对应的所有非空信息合并到单行,保留每个字段的唯一有效值。

步骤1:准备示例数据

首先先把你给出的示例数据转换成Pandas DataFrame(注意原数据里的Null对应Pandas中的NaN):

import pandas as pd
import numpy as np

# 构造示例DataFrame
data = {
    'Id': [1, 1, 1, 2, 2, 3, 4],
    'Phone': [np.nan, '028', '028', '040', np.nan, '015', '023'],
    'Email': ['g@', 'g@', np.nan, np.nan, 't@', 'b@', 'c@'],
    'Product': ['A', np.nan, 'A', 'B', 'B', 'E', 'D'],
    'Age': [20, np.nan, np.nan, 25, np.nan, 23, 30]
}
df = pd.DataFrame(data)

步骤2:分组聚合处理

核心逻辑是按Id分组,然后对每个列取第一个非空值——Pandas的first()聚合函数会自动忽略NaN,刚好满足我们的需求:

# 按Id分组,聚合非空值
result_df = df.groupby('Id', as_index=False).first()

步骤3:查看结果

运行上面的代码后,result_df就是你想要的最终DataFrame:

Id Phone Email Product  Age
0   1   028    g@       A   20
1   2   040    t@       B   25
2   3   015    b@       E   23
3   4   023    c@       D   30

补充说明

如果你的数据中存在同一Id下同一列有不同非空值的情况(比如同一个Id的Phone出现了两个不同号码),first()会取第一个出现的有效值。这种场景下你可能需要额外处理(比如去重、标记冲突),但从你的示例数据来看,同一Id的各字段非空值都是一致的,所以这个方法完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:38:23