gpt4 book ai didi

python - 如何按月汇总和汇总项目?

转载 作者:行者123 更新时间:2023-11-28 16:20:15 25 4
gpt4 key购买 nike

我有 2 个数据框(带价格的订单和商品):

orders = pd.DataFrame({'id': [1,2], 'sum_delivery': [10, 0], 'date': ['2016-01-01', '2016-01-05']})
items = pd.DataFrame({'id': [1,2,3], 'order_id': [1,1,2], 'price': [100, 100, 500], 'count':[5,5,1]})

我想按月汇总数据,最后得到这个dataframe:

{'date': ['2016-01'], 'sum': [1510]}

用 sql 很容易,但是用 pandas 怎么办呢?

最佳答案

您希望每个订单仅考虑一次sum_delivery,因此您必须groupby加入之前:

>>> items2 = items.groupby('order_id', as_index=False)['sum'].sum()
>>> items2
order_id sum
0 1 1000
1 2 500

现在您可以使用 pandas.DataFrame.merge使用自定义列名:

>>> res = pd.merge(orders, items2, left_on = 'id', right_on = 'order_id')[['date', 'sum', 'sum_delivery']]
>>> res
date sum sum_delivery
0 2016-01-01 1000 10
1 2016-01-05 500 0

现在只需做简单的数学运算和简单的 pandas.DataFrame.groupby (不要忘记使用 as_index=False):

>>> res['date'] = res['date'].str[:7]
>>> res['sum2'] = res['sum'] + res['sum_delivery']
>>> res2 = res.groupby('date', as_index=False)['sum2'].sum()
>>> res2
date sum2
0 2016-01 1510

关于python - 如何按月汇总和汇总项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com