理解 Stack/Unstack/Pivot_Table/etc

Making Sense of Stack/Unstack/Pivot_Table/etc

我有一个 Pandas DataFrame,如下所示:

    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

我一直在盯着堆栈和取消堆栈函数以及相关函数(如 melt 和 pivot_table)的文档,但我似乎不太明白这些函数的组合我需要做什么我想。我试图摆脱 "Element" 列,而是创建两个新列,"TMAX" 和 "TMIN"。这将使每一行成为一个独特的观察结果。每个 Date/ID 组合都有一个 TMAX 和 TMIN。所以理论上这个新数据框的高度是当前数据框的一半。

文档:https://pandas.pydata.org/pandas-docs/stable/reshaping.html

创建 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

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