2024-05-13 11:16:53 发布
网友
我在下面有两个数据帧。我想合并这两个数据帧并计算每个供应商每年的发票金额之和作为第一个输出。我尝试了df1和df2合并,但合并会消除不在两个数据帧上的数据帧。我尝试分组,然后对发票总额求和,列全部关闭
我还想要第二个输出,其中计算每个供应商2017-2018年和2019-2020年发票的总和,以显示12个月阶段之间的差异
数据帧1:
数据帧2:
预期产出1:
预期产出2:
您可以只append在groupby之前的数据帧:
append
groupby
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:
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
您可以只
append
在groupby
之前的数据帧:然后可以创建一个
pivot_table
:相关问题 更多 >
编程相关推荐