按供应商名称、年份和发票总额分组

2024-05-13 11:16:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在下面有两个数据帧。我想合并这两个数据帧并计算每个供应商每年的发票金额之和作为第一个输出。我尝试了df1和df2合并,但合并会消除不在两个数据帧上的数据帧。我尝试分组,然后对发票总额求和,列全部关闭

我还想要第二个输出,其中计算每个供应商2017-2018年和2019-2020年发票的总和,以显示12个月阶段之间的差异

数据帧1:

^{tb1}$

数据帧2:

^{tb2}$

预期产出1:

^{tb3}$

预期产出2:

^{tb4}$

Tags: 数据发票差异金额阶段供应商df1df2
1条回答
网友
1楼 · 发布于 2024-05-13 11:16:53

您可以只appendgroupby之前的数据帧:

df3 = df1.append(df2)
output1 = df3.groupby(["Company Code", "VendorName", df3["InvoiceDate"].dt.year])["InvoiceAmount"].sum().reset_index()

>>> output1
   Company Code VendorName  InvoiceDate  InvoiceAmount
0            14         HM         2019            360
1            99      Macys         2017          11500
2            99      Macys         2018          15720
3            99      Macys         2019           6105
4            99      Macys         2020           3100
5           255  Hollister         2020            450

然后可以创建一个pivot_table

output2 = pd.pivot_table(output1, 
                         "InvoiceAmount", 
                         ["Company Code", "VendorName"], 
                         output1["InvoiceDate"]<2019, 
                         "sum").rename(columns={True: "2017-2018", False: "2019-2020"})
output2["%Increase/Decrease"] = (output2["2019-2020"].div(output2["2017-2018"])-1).fillna(1)
output2 = output2.fillna(0).reset_index()

>>> output2 
InvoiceDate  Company Code VendorName  2019-2020  2017-2018  %Increase/Decrease
0                      14         HM      360.0        0.0             1.00000
1                      99      Macys     9205.0    27220.0            -0.66183
2                     255  Hollister      450.0        0.0             1.00000

相关问题 更多 >