groupby('userid')
then 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()