我有一个如下所示的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之类的相关功能的文档,但是我似乎还不太清楚我需要做的事情。我试图摆脱“元素”列,而是创建两个新列“ TMAX”和“ TMIN”。这将使每一行都是唯一的观察结果。每个日期/ ID组合都有一个TMAX和TMIN。因此,从理论上讲,此新数据框将是当前数据框高度的一半。
答案 0 :(得分:0)
文档: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。