#python #pandas
#python #pandas
Вопрос:
Мне нужно объединить несколько строк в одну строку с pandas, в зависимости от хэша столбца
Просмотр моего фрейма данных:
hash a b
0 1 1 6
1 1 2 7
2 1 3 8
3 2 4 9
4 2 5 10
Я хочу, чтобы фрейм данных был преобразован следующим образом:
hash a a1 a3 b b1 b2
0 1 1 2 3 6 7 8
1 2 4 5 nan 9 10 nan
Я пытался использовать некоторый код, связанный с groupby, или транспонировать весь фрейм данных, но не могу понять, как это сделать. Кто-нибудь может мне помочь?
Ответ №1:
Создайте MultiIndex
set_index
с помощью счетчика столбцов cumcount
, измените unstack
форму и сгладьте Multiindex
map
с помощью join
:
df1 = df.set_index(['hash', df.groupby('hash').cumcount().add(1).astype(str)]).unstack()
df1.columns = df1.columns.map(''.join)
df1 = df1.reset_index()
print (df1)
hash a1 a2 a3 b1 b2 b3
0 1 1.0 2.0 3.0 6.0 7.0 8.0
1 2 4.0 5.0 NaN 9.0 10.0 NaN