我有一个分组的数据框,如下所示:
Date ID Name Category Group Amount
2018-02-28 123 ABC Fruits INT 22345
2018-02-28 456 JFGT Veg FEE 56789
2018-02-28 5687 AST Seeds FEE 4567
2018-02-28 5687 AST Seeds INT 236
.............
.............
2018-03-31 123 ABC Fruits INT 790
2018-03-31 456 JFGT Veg FEE 35637
2018-03-31 5687 AST Seeds FEE 4567
2018-03-31 5687 AST Seeds INT 236
.............
.............
我需要基本上按组和日期列拆分金额,以创建类似:
的内容ID Name Category INT_2018-02 INT_2018-03 FEE_2018-02 FEE_2018-03
123 ABC Fruits 22345 790
456 JFGT Veg 56789 35637
5687 AST Seeds 4567 4567
5687 AST Seeds 236 236
.............
.............
它基本上是一个堆栈。 我可以通过
进行正常的小组拆除 df = df.set_index(['Date','ID','Name','Category','Group'])['Amount'].unstack().reset_index()
但是,我不确定如何使用Date或使用两列来实现unstack方法。 请指教。
答案 0 :(得分:1)
添加新列:
df["GD"] = df["Group"] + "_" + df["Date"]
围绕新列旋转DF:
result = df[["ID", "Name", "Category"]]\
.join(df.pivot(None, "GD", "Amount"))\
.fillna(" ") # The last line is not necessary
# ID Name Category FEE_2018-02-28 INT_2018-02-28
#0 123 ABC Fruits 22345
#1 456 JFGT Veg 56789
#2 5687 AST Seeds 4567
#3 5687 AST Seeds 236