我正在尝试制作一个数据透视表,使其看起来像下面第一个数据中的预期结果(第二个表);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
. 您可以通过To
groupby,然后取消堆叠:
df.groupby(['To',df.index.to_period('M')])['Quantity'].sum().unstack()
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
您可以使用原始代码的一部分并将其与函数混合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
希望它有用!
蛊毒传说
TA贡献1895条经验 获得超3个赞
使用 pd.crosstab:
pd.crosstab(df['To'], df['To Date'], df['Quantity'], aggfunc='sum')
添加回答
举报
0/150
提交
取消