簡體   English   中英

帶 Groupby 的數據透視表 - Pandas

[英]Pivot Table with 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()

..但是我正在刪除其他數據等,但似乎無法正確旋轉它!

非常感謝任何幫助!

要獲得每月,最好使用to_period 你可以通過To到 groupby,然后 unstack:

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

使用 pd.crosstab:

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

您可以使用原始代碼的一部分並將其與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

希望有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM