如何将多条记录映射至唯一ID?多数据集ID关联合并需求咨询
解决ID映射合并多记录的Pandas方案
刚好碰到过类似的场景,用Pandas可以轻松实现你要的ID映射合并需求,我给你一步步拆解实现过程:
1. 先构造示例数据集
首先我们先把你描述的两个DataFrame用代码还原出来:
import pandas as pd # 构造df1(唯一ID的数据集) df1 = pd.DataFrame({'ID': [1, 2, 3, 4, 5]}) # 构造df2(含重复ID的数据集) df2 = pd.DataFrame({ 'ID': [1, 2, 1, 3, 3], 'col1': ['mango', 'melon', 'straw', 'banana', 'papaya'] })
2. 合并df2中同一ID的col1值
我们需要先对df2按ID分组,把同一个ID对应的col1值用空格拼接起来:
# 按ID分组,将col1的内容用空格连接 df2_merged = df2.groupby('ID')['col1'].agg(' '.join).reset_index()
这一步之后,df2_merged就变成了每个ID对应唯一合并值的数据集:
ID col1 0 1 mango straw 1 2 melon 2 3 banana papaya
3. 和df1做左连接,保留所有ID
接下来用左连接(how='left')把处理后的df2和df1合并,这样df1里的所有ID都会被保留,没有匹配到的ID对应的col1会显示为NaN:
# 左连接合并两个数据集 result_df = df1.merge(df2_merged, on='ID', how='left')
4. 填充缺失值为"not available"
最后把NaN值替换成你需要的"not available":
# 填充缺失值 result_df['col1'] = result_df['col1'].fillna('not available')
最终输出结果
运行完上面的代码后,打印result_df就能得到你想要的结果:
ID col1 0 1 mango straw 1 2 melon 2 3 banana papaya 3 4 not available 4 5 not available
内容的提问来源于stack exchange,提问作者sathvik
相关产品推荐
相关产品推荐

