python - Pandas 如何将每个 id 的月份值相加

标签 python pandas

我有这样的数据。

id           date     amount
2        2018-04-03    10
2        2018-04-22    20     
3        2018-01-21    20
4        2018-03-13    10 
4        2018-04-19    30 

我想计算每个月和每个 ID 的金额总和。所以结果会是这样的。每个 ID 中的月份不相同。

id           date     amount
2          2018-04    30
3          2018-01    20
4          2018-03    10 
4          2018-04    30 

我通过这段代码进行测试。

df['amount'].groupby(df['date'].dt.to_period('M')).sum()

结果是。

pos_dt
2018-04   60
2018-01   20
2018-03   10

它不是通过 id 单独分组的。如何解决?

最佳答案

您需要按 id 和月份对两者进行分组,以便可以通过以下方式计算:

df.groupby(<b>['id',</b> df['date'].dt.to_period('M')<b>]</b>).sum()

例如:

>>> df.groupby(['id', df['date'].dt.to_period('M')]).sum()
            amount
id date           
2  2018-04      30
3  2018-01      20
4  2018-03      10
   2018-04      30

关于python - Pandas 如何将每个 id 的月份值相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58474407/

相关文章:

python - Spyder IPython 和 "normal"IPython sys.path 之间的区别

json - 尝试使用 Dataframe.to_json 方法时出错

python - 我们可以在函数映射需要超过 1 个参数的地方应用 pandas.map() 吗?

python - 抓取亚马逊时被阻止(即使有标题、代理、延迟)

python - pandas 将其他列乘以另一个列

python - 如果有空白 DataFrame 则 reduce() 合并

python - Pandas:直接从日期时间列返回小时

python - Seaborn 条形图中 X 轴上的日期排序和格式化

python - account.invoice 添加自定义计算和过滤字段

python - Matplotlib:使轴适合形状限制