根据索引在行中显示列值
Display column values in rows according to index
我有一个具有这种结构的 DataFrame
Date Values
Variable
Var1 01/01/2021 0:00 1
Var1 01/01/2021 1:00 2
Var1 01/01/2021 2:00 3
Var2 01/01/2021 0:00 4
Var2 01/01/2021 1:00 5
Var3 01/01/2021 0:00 6
Var3 01/01/2021 1:00 7
Var3 01/01/2021 2:00 8
Var3 01/01/2021 3:00 9
并且我想翻转 Date
和 Values
两列,以便为每个 Variable
创建一行:
01/01/2021 0:00 01/01/2021 1:00 01/01/2021 2:00 01/01/2021 3:00
Var1 1 2 3 NaN
Var2 4 5 NaN NaN
Var3 6 7 8 9
使用DataFrame.set_index
with Series.unstack
:
df1 = df.set_index('Date', append=True)['Values'].unstack()
print (df1)
Date 01/01/2021 0:00 01/01/2021 1:00 01/01/2021 2:00 01/01/2021 3:00
Variable
Var1 1.0 2.0 3.0 NaN
Var2 4.0 5.0 NaN NaN
Var3 6.0 7.0 8.0 9.0
最后添加 DataFrame.rename_axis
:
df1 = (df.set_index('Date', append=True)['Values']
.unstack()
.rename_axis(index=None, columns=None))
print (df1)
01/01/2021 0:00 01/01/2021 1:00 01/01/2021 2:00 01/01/2021 3:00
Var1 1.0 2.0 3.0 NaN
Var2 4.0 5.0 NaN NaN
Var3 6.0 7.0 8.0 9.0
我有一个具有这种结构的 DataFrame
Date Values
Variable
Var1 01/01/2021 0:00 1
Var1 01/01/2021 1:00 2
Var1 01/01/2021 2:00 3
Var2 01/01/2021 0:00 4
Var2 01/01/2021 1:00 5
Var3 01/01/2021 0:00 6
Var3 01/01/2021 1:00 7
Var3 01/01/2021 2:00 8
Var3 01/01/2021 3:00 9
并且我想翻转 Date
和 Values
两列,以便为每个 Variable
创建一行:
01/01/2021 0:00 01/01/2021 1:00 01/01/2021 2:00 01/01/2021 3:00
Var1 1 2 3 NaN
Var2 4 5 NaN NaN
Var3 6 7 8 9
使用DataFrame.set_index
with Series.unstack
:
df1 = df.set_index('Date', append=True)['Values'].unstack()
print (df1)
Date 01/01/2021 0:00 01/01/2021 1:00 01/01/2021 2:00 01/01/2021 3:00
Variable
Var1 1.0 2.0 3.0 NaN
Var2 4.0 5.0 NaN NaN
Var3 6.0 7.0 8.0 9.0
最后添加 DataFrame.rename_axis
:
df1 = (df.set_index('Date', append=True)['Values']
.unstack()
.rename_axis(index=None, columns=None))
print (df1)
01/01/2021 0:00 01/01/2021 1:00 01/01/2021 2:00 01/01/2021 3:00
Var1 1.0 2.0 3.0 NaN
Var2 4.0 5.0 NaN NaN
Var3 6.0 7.0 8.0 9.0