Pandas 理解堆栈/取消堆栈/透视表/等

Pandas 理解堆栈/取消堆栈/透视表/等,pandas,dataframe,data-cleaning,Pandas,Dataframe,Data Cleaning,我有一个熊猫数据框,如下所示: ID Date Element Temperature (C) 0 USW00094889 2014-11-12 TMAX 2.2 1 USC00208972 2009-04-29 TMIN 5.6 2 USC00200032 2008-05-26 TMAX 27.8 3 USC00205563 2005-11-11 TMAX 13.9 4 USC00200230 2014

我有一个熊猫数据框,如下所示:

    ID           Date      Element  Temperature (C)
0   USW00094889 2014-11-12  TMAX    2.2
1   USC00208972 2009-04-29  TMIN    5.6
2   USC00200032 2008-05-26  TMAX    27.8
3   USC00205563 2005-11-11  TMAX    13.9
4   USC00200230 2014-02-27  TMAX    -10.6
我一直在看堆栈和unstack函数以及相关函数(如melt和pivot_table)的文档,但我似乎不太清楚这些函数的组合,我需要做我想做的事情。我试图去掉“Element”列,而是创建两个新列,“TMAX”和“TMIN”。这将使每一行成为一个独特的观察。每个日期/ID组合都有一个TMAX和TMIN。因此理论上,这个新的数据帧将是当前数据帧高度的一半

文档:

创建DF并创建所需的多索引

"""
ID,Date,Element,Temperature (C)
USW00094889,2014-11-12,TMAX,2.2
USC00208972,2009-04-29,TMIN,5.6
USC00200032,2008-05-26,TMAX,27.8
USC00205563,2005-11-11,TMAX,13.9
USC00200230,2014-02-27,TMAX,-10.6
"""
import pandas as pd
df = pd.read_clipboard(sep=",").set_index(["ID", "Date"])
print(df)
输出:

                       Element  Temperature (C)
ID          Date                               
USW00094889 2014-11-12    TMAX              2.2
USC00208972 2009-04-29    TMIN              5.6
USC00200032 2008-05-26    TMAX             27.8
USC00205563 2005-11-11    TMAX             13.9
USC00200230 2014-02-27    TMAX            -10.6

df.pivot(index=df.index, columns="Element")
                       Temperature (C)     
Element                           TMAX TMIN
ID          Date                           
USC00200032 2008-05-26            27.8  NaN
USC00200230 2014-02-27           -10.6  NaN
USC00205563 2005-11-11            13.9  NaN
USC00208972 2009-04-29             NaN  5.6
USW00094889 2014-11-12             2.2  NaN
输出:

                       Element  Temperature (C)
ID          Date                               
USW00094889 2014-11-12    TMAX              2.2
USC00208972 2009-04-29    TMIN              5.6
USC00200032 2008-05-26    TMAX             27.8
USC00205563 2005-11-11    TMAX             13.9
USC00200230 2014-02-27    TMAX            -10.6

df.pivot(index=df.index, columns="Element")
                       Temperature (C)     
Element                           TMAX TMIN
ID          Date                           
USC00200032 2008-05-26            27.8  NaN
USC00200230 2014-02-27           -10.6  NaN
USC00205563 2005-11-11            13.9  NaN
USC00208972 2009-04-29             NaN  5.6
USW00094889 2014-11-12             2.2  NaN

请注意,我从您的示例df中删除了数字ID。

您好,欢迎使用StackOverflow。到目前为止你试过什么?结果如何?你能链接到一些其他的SO帖子来解决这个问题,但不能解决这个问题吗?我建议在你的帖子中也包括你想要的输出。