如何合并含重复ID的DataFrame?一对多合并方法咨询
实现DataFrame的一对多合并(基于productID)
核心解决方法
使用pandas的merge()函数即可自动处理这种一对多合并场景——当dfA中同一个productID对应多条采购记录时,函数会自动匹配dfB中对应的单条产品信息,并将其复制到每条匹配的采购记录上,无需额外配置特殊参数。
示例代码
import pandas as pd # 构造示例采购数据dfA dfA = pd.DataFrame({ 'purchaseID': [1, 2, 3], 'productID': [432, 432, 567], 'quantity': [1, 4, 7] }) # 构造示例产品详情数据dfB dfB = pd.DataFrame({ 'productID': [432, 567], 'name': ['mower', 'cat'] }) # 基于productID执行合并 merged_df = pd.merge(dfA, dfB, on='productID')
合并结果
执行后得到的merged_df结构如下:
| purchaseID | productID | quantity | name |
|---|---|---|---|
| 1 | 432 | 1 | mower |
| 2 | 432 | 4 | mower |
| 3 | 567 | 7 | cat |
补充说明
- 若需要保留dfA中所有采购记录(即使dfB中无对应
productID),可将how参数设为'left',即pd.merge(dfA, dfB, on='productID', how='left'),未匹配到的name字段会显示为NaN。 - 针对大数据量场景,确保两个DataFrame的
productID列数据类型一致(如均为整数),可避免类型不匹配导致的合并错误或性能损耗。
内容的提问来源于stack exchange,提问作者user8793002
相关产品推荐
相关产品推荐

