如何将含重复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
相关产品推荐
相关产品推荐

