如何合并pandas DataFrame中相同productID的重复行
解决方法
你可以通过pandas的分组聚合操作快速完成行合并,该场景下有多种可用实现方式:
- 方法1:使用
groupby+first(),会自动取每个分组下各列的第一个非空有效值,是最适配当前场景的写法
代码示例:# 按productID分组,取各列第一个非空值,as_index=False保证productID不作为索引 df_result = df.groupby('productID', as_index=False).first() - 方法2:使用
groupby+sum(),因为NaN和数值相加结果为数值本身,也能得到正确结果
代码示例:df_result = df.groupby('productID', as_index=False).sum() - 方法3:使用数据透视表
pivot_table实现
代码示例:df_result = df.pivot_table( index='productID', values=['units sold', 'units in inventory'], aggfunc='first' ).reset_index()
完整可运行的测试代码如下:
import pandas as pd import numpy as np # 构造和示例一致的原始DataFrame raw_data = { 'productID': [101, 102, 103, 104, 101, 102, 103, 104], 'units sold': [32, 45, 15, 27, np.nan, np.nan, np.nan, np.nan], 'units in inventory': [np.nan, np.nan, np.nan, np.nan, 18, 12, 30, 23] } df = pd.DataFrame(raw_data) # 执行合并 df_result = df.groupby('productID', as_index=False).first() # 输出结果和预期完全一致 print(df_result)
内容的提问来源于stack exchange,提问作者jub
相关产品推荐
相关产品推荐

