第一个用于正确排序转换列
Month
到
ordered categorical
然后通过
set_index
具有
unstack
:
cats = ['January','February']
df['Month'] = pd.Categorical(df['Month'], categories=cats, ordered=True)
或者,如果在原始列中订购了月份,请感谢@asongtoruin:
df['Month'] = pd.Categorical(df['Month'], categories=df['Month'].unique(), ordered=True)
df = (df.set_index(['Location','Month','Metric'])['Value']
.unstack()
.reset_index()
.rename_axis(None, axis=1)
.sort_values('Month'))
print (df)
Location Month Color Temperature
0 Alaska January Yellow 40
2 California January Green 30
4 New York January Blue 20
6 Texas January Red 10
1 Alaska February Brown NaN
3 California February Orange 35
5 New York February Purple 25
7 Texas February NaN 15