Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 同时取消堆叠两列以生成串联的列名_Python_Pandas_Multi Level - Fatal编程技术网

Python 同时取消堆叠两列以生成串联的列名

Python 同时取消堆叠两列以生成串联的列名,python,pandas,multi-level,Python,Pandas,Multi Level,我有一个分组的数据帧,看起来像: 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

我有一个分组的数据帧,看起来像:

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()
但是,我不确定如何使用日期或unstack方法使用两列。 请告知。

添加一个新列:

df["GD"] = df["Group"] + "_" + df["Date"]
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
围绕新柱旋转DF:

df["GD"] = df["Group"] + "_" + df["Date"]
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

日期
连接起来,使新列成为索引,然后取消堆栈,怎么样?这是一个不错的选择,为什么我没有想到:)实际上,你需要旋转,而不是取消堆栈。我会把它作为一个答案发布。Unstack给了我同样的东西。我这里遗漏了什么吗?unstack应该会给你一个列多索引。如果您对此没有问题,请使用“取消堆叠”。