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

Pandas技术求助:为DataFrame新增每日金额占比列Pct_Day

解决Pandas计算每日金额占比的问题

别慌,这个Pandas操作其实没那么复杂,我来帮你搞定!核心思路就是先算出每个日期的总金额,再让每个ID的金额除以对应日期的总金额就行。

步骤1:先还原示例数据

先把你提到的示例DataFrame构造出来,方便演示:

import pandas as pd

data = {
    'Date': ['8/7/17', '8/7/17', '8/7/17'],
    'ID': [553, 554, 555],
    'Amount': [3, 4, 5]
}
df = pd.DataFrame(data)

步骤2:生成每日占比列

这里用groupby配合transform方法就很合适——transform会把分组计算的结果广播回原DataFrame的每一行,刚好匹配我们的需求:

# 新增Pct_Day列,计算每个ID金额占当日总金额的比例
df['Pct_Day'] = df['Amount'] / df.groupby('Date')['Amount'].transform('sum')

最终结果

运行后你的DataFrame会变成这样:

DateIDAmountPct_Day
8/7/1755330.25
8/7/1755440.333333
8/7/1755550.416667

完全符合你要的第一行3/(3+4+5)=0.25的要求。如果你的实际数据包含多个日期,这个方法也会自动处理每个日期的分组计算,不用额外写循环~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:05:55