猿问

带 Groupby 的数据透视表 - Pandas

我正在尝试制作一个数据透视表,使其看起来像下面第一个数据中的预期结果(第二个表);


To Date         From    To    Quantity


10/11/2020   USA   Ireland  5

10/11/2020   USA   France   4

11/11/2020   USA   France   6

12/11/2020   USA   Jamaica  6

12/11/2020   USA   France   5

.

.

.

14/02/2021   USA   Ireland  65

           01/11/2020   01/12/2020   01/01/2021  01/02/2021


Ireland    15                                    65

France     10

Jamaica    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()


..但是后来我删除了其他数据等,并且似乎无法正确旋转它!


Cats萌萌
浏览 102回答 3
3回答

慕标琳琳

要获得每月的费用,最好使用to_period. 您可以通过Togroupby,然后取消堆叠:df.groupby(['To',df.index.to_period('M')])['Quantity'].sum().unstack()

qq_花开花谢_0

您可以使用原始代码的一部分并将其与函数混合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  JamaicaTo Date To Date                          2       2021        NaN     65.0      NaN10      2020        4.0      5.0      NaN11      2020        6.0      NaN      NaN12      2020        5.0      NaN      6.0希望它有用!

蛊毒传说

使用 pd.crosstab:pd.crosstab(df['To'], df['To Date'], df['Quantity'], aggfunc='sum')
随时随地看视频慕课网APP

相关分类

Python
我要回答