You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中统计两个DataFrame重复行对应列的数值和

报错原因

  • 列名引用错误:代码中的2019-12-01未加引号,Python会将其识别为算术表达式2019-12-1,计算结果为2006,无法匹配到实际的字符串格式列名
  • 拼接逻辑错误:按axis=1横向拼接两个DataFrame仅按行索引对齐,不会自动匹配make列的取值,会把不同品牌的行错误拼接到同一行,完全不符合需求
  • 重复值判断逻辑错误:横向拼接后会出现两个make列,duplicated方法指定subset=['make']时无法明确判断哪一列的重复值,触发了真值歧义报错

高效实现方案

针对大数据量场景,使用inner关联直接取两个DataFramemake列的交集,是性能最优的实现方式,不需要处理全量无关数据,内存占用低、运行速度快:

import pandas as pd

# 仅取需要的列做关联,自动匹配两个表中都存在的make
common_df = pd.merge(
    df1[['make', '2019-12-01']],
    df2[['make', '2018-12-01']],
    on='make',
    how='inner'
)

# 分别求和后取最小值
sum_df1 = common_df['2019-12-01'].sum()
sum_df2 = common_df['2018-12-01'].sum()
flow = min(sum_df1, sum_df2)
print(flow)

如果单个DataFrame中存在make列重复的情况,可以先按make分组聚合后再关联,避免产生笛卡尔积:

# 先各自按make分组求和,再做关联
df1_agg = df1.groupby('make', as_index=False)['2019-12-01'].sum()
df2_agg = df2.groupby('make', as_index=False)['2018-12-01'].sum()

common_df = pd.merge(df1_agg, df2_agg, on='make', how='inner')
sum_df1 = common_df['2019-12-01'].sum()
sum_df2 = common_df['2018-12-01'].sum()
flow = min(sum_df1, sum_df2)

内容的提问来源于stack exchange,提问作者arnoldhenry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:15:01