[英]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.