如何用Python Pandas高效合并连续相同行并累加对应数值
用Pandas合并连续相同LITHO_UNIT行并累加数值的高效方案
核心思路
先给连续相同的LITHO_UNIT标记唯一分组ID,再按分组聚合求和,全程用Pandas向量化操作,效率拉满。
1. 还原示例数据(方便测试)
假设你的原始DataFrame如下:
import pandas as pd df = pd.DataFrame({ 'LITHO_UNIT': ['Shale', 'Shale', 'Sandstone', 'Sandstone', 'Shale'], 'THICKNESS': [0.5, 1.2, 2.0, 0.8, 0.3], 'RECOVERY': [0.2, 0.8, 1.5, 0.6, 0.1] })
2. 生成连续分组ID
通过对比当前行与上一行的LITHO_UNIT,生成分组标识:
# 当当前行和上一行LITHO_UNIT不同时,标记为1,累加后得到唯一分组ID df['group_id'] = (df['LITHO_UNIT'] != df['LITHO_UNIT'].shift()).cumsum()
3. 分组聚合求和
按group_id和LITHO_UNIT分组,对目标列求和,最后移除分组ID列:
result = df.groupby(['group_id', 'LITHO_UNIT'], as_index=False).agg({ 'THICKNESS': 'sum', 'RECOVERY': 'sum' }).drop('group_id', axis=1)
4. 查看最终结果
print(result)
输出完全匹配预期:
LITHO_UNIT THICKNESS RECOVERY 0 Shale 1.7 1.0 1 Sandstone 2.8 2.1 2 Shale 0.3 0.1
效率说明
这套方案全程用Pandas内置的向量化操作,没有手动循环,时间复杂度为O(n),处理十万甚至百万级别的数据都能保持高效。
内容的提问来源于stack exchange,提问作者akash mohanty
相关产品推荐
相关产品推荐

