python - 排序以获取第一名的元素列表,第二名的元素列表等
问题描述
有一个小数据框(groupby 中的一个组,但与这个问题并不真正相关),排序后看起来像这样:
df = pd.DataFrame([['a', 'b', 'c'], [1,2,2], [1,3,3]]).T
df.columns = ['name', 'sorter1', 'sorter2']
sorted_df = df.sort_values(['sorter1', 'sorter2'])
姓名 | 分拣机1 | 分拣机2 | |
---|---|---|---|
0 | 一个 | 1 | 1 |
1 | b | 2 | 3 |
2 | C | 2 | 3 |
想将它转移到第一、第二和第三位的数据框中,得到这个:
result = sorted_df[['name']].T
result.columns = ['first', 'second', 'third']
第一的 | 第二 | 第三 | |
---|---|---|---|
姓名 | 一个 | b | C |
但我真正需要的是:
第一的 | 第二 | 第三 | |
---|---|---|---|
姓名 | 一个 | ['b','c'] | 楠 |
欢迎任何想法,熊猫或其他,谢谢。
解决方案
单程:
df.sort_values(['sorter1', 'sorter2'], inplace=True)
df = df.groupby(['sorter1', 'sorter2'], as_index=False, sort=False).agg(list).reindex(df.index)[['name']].T