为了账号安全,请及时绑定邮箱和手机立即绑定

带 Groupby 的数据透视表 - Pandas

带 Groupby 的数据透视表 - Pandas

Cats萌萌 2023-09-26 14:17:03
我正在尝试制作一个数据透视表,使其看起来像下面第一个数据中的预期结果(第二个表);To Date         From    To    Quantity10/11/2020   USA   Ireland  510/11/2020   USA   France   411/11/2020   USA   France   612/11/2020   USA   Jamaica  612/11/2020   USA   France   5...14/02/2021   USA   Ireland  65           01/11/2020   01/12/2020   01/01/2021  01/02/2021Ireland    15                                    65France     10Jamaica    6我可以通过 groupby() 来获取每月数据。我希望数据透视表包含每个国家/地区的总金额。df.index = qathist['To Date']df.index = pd.to_datetime(df.index)df_m= df.groupby(by=[df.index.year, df.index.month]).sum()..但是后来我删除了其他数据等,并且似乎无法正确旋转它!
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

要获得每月的费用,最好使用to_period. 您可以通过Togroupby,然后取消堆叠:

df.groupby(['To',df.index.to_period('M')])['Quantity'].sum().unstack()


查看完整回答
反对 回复 2023-09-26
?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

您可以使用原始代码的一部分并将其与函数混合pd.pivot_table。


例如,如果您的原始数据框是df:


df.index = pd.to_datetime(df["To Date"])

pivot = df.pivot_table(values="Quantity", 

                       columns="To", 

                       index=[df.index.month, df.index.year],

                       aggfunc='sum')

输出如下


To               France  Ireland  Jamaica

To Date To Date                          

2       2021        NaN     65.0      NaN

10      2020        4.0      5.0      NaN

11      2020        6.0      NaN      NaN

12      2020        5.0      NaN      6.0

希望它有用!


查看完整回答
反对 回复 2023-09-26
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

使用 pd.crosstab:

pd.crosstab(df['To'], df['To Date'], df['Quantity'], aggfunc='sum')


查看完整回答
反对 回复 2023-09-26
  • 3 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信