Groupby, транспонировать и добавлять в панд?
у меня есть фрейм данных, который выглядит так:
каждый пользователь имеет 10 записей. Теперь я хочу создать фрейм данных, который выглядит следующим образом:
userid name1 name2 ... name10
что означает, что мне нужно инвертировать каждые 10 записей столбца name
и добавить в новую таблицу данных.
Итак, как это сделать? Есть ли способ сделать это в панд?
1 ответов
groupby('userid')
затем reset_index
внутри каждой группы для последовательного перечисления между группами. Тогда unstack
чтобы получить столбцы.
df.groupby('userid')['name'].apply(lambda df: df.reset_index(drop=True)).unstack()
демонстрация
df = pd.DataFrame([
[123, 'abc'],
[123, 'abc'],
[456, 'def'],
[123, 'abc'],
[123, 'abc'],
[456, 'def'],
[456, 'def'],
[456, 'def'],
], columns=['userid', 'name'])
df.sort_values('userid').groupby('userid')['name'].apply(lambda df: df.reset_index(drop=True)).unstack()
если вы не хотите, чтобы userid
в качестве индекса, добавить reset_index
до конца.
df.sort_values('userid').groupby('userid')['name'].apply(lambda df: df.reset_index(drop=True)).unstack().reset_index()