首页 > 解决方案 > 排序以获取第一名的元素列表,第二名的元素列表等

问题描述

有一个小数据框(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']

欢迎任何想法,熊猫或其他,谢谢。

标签: pythonpandassorting

解决方案


单程:

df.sort_values(['sorter1', 'sorter2'], inplace=True)
df = df.groupby(['sorter1', 'sorter2'], as_index=False, sort=False).agg(list).reindex(df.index)[['name']].T

推荐阅读