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

如何在DataFrame中生成指定条件下Revenue列求和的单行结果?

需求场景

执行代码 df= df.loc[df['Week_Date'] == '2342',['Week_Date','Revenue']] 后,得到如下多行DataFrame:

Week_DateRevenue
23427.0
23428.0
23426.0
23429.0
23429.0
23424.0
23428.0
23424.0

尝试执行 df= df.loc[df['Week_Date'] == '2342',['Week_Date','Revenue']].sum() 仅返回求和数值55,期望生成如下单行DataFrame:

Week_DateRevenue
234255.0
解决方案

方法1:分组求和(推荐)

通过groupby按Week_Date分组后对Revenue求和,直接得到目标格式:

df = df.loc[df['Week_Date'] == '2342', ['Week_Date', 'Revenue']].groupby('Week_Date').sum().reset_index()
  • groupby('Week_Date'):以Week_Date为分组依据
  • .sum():对每组的Revenue字段求和
  • .reset_index():将分组字段从索引转回普通列,保持原数据结构

方法2:手动构造DataFrame

先筛选目标数据并计算总和,再手动生成单行DataFrame:

# 筛选目标行
filtered_df = df.loc[df['Week_Date'] == '2342', ['Week_Date', 'Revenue']]
# 计算Revenue总和
total_revenue = filtered_df['Revenue'].sum()
# 构造目标DataFrame
df = pd.DataFrame({'Week_Date': ['2342'], 'Revenue': [total_revenue]})

方法3:自定义聚合

通过agg指定各列的聚合规则,生成单行结果:

df = df.loc[df['Week_Date'] == '2342', ['Week_Date', 'Revenue']].agg({
    'Week_Date': 'first',  # 取第一个值(所有值都是2342)
    'Revenue': 'sum'       # 求和
}).to_frame().T.reset_index(drop=True)
  • .agg():为不同列设置不同聚合逻辑
  • .to_frame().T:将聚合得到的Series转为DataFrame并转置为行结构
  • .reset_index(drop=True):移除自动生成的索引列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:22:46