#python #pandas #dataframe #multi-index
Вопрос:
У меня есть фрейм данных с этой структурой
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
Ответ №1:
Воспользуйся DataFrame.set_index
с 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
Комментарии:
1. как я могу преобразовать значение 1.0 в 1 в этом случае? может быть, было бы лучше, если бы тип был int.
2. @everfight — Есть
NaN
s, поэтому возможным решением является.astype('Int64')