我有一个数据帧,如下所示:
col1=[1,1,1,2,2,2,3,3,3]
col2=['a','b','c','d','e','f','g','h','i']
col3=[1,2,3,2,3,1,3,1,2]
d={
"col1":col1,
"col2":col2,
"col3":col3
}
dummy= pd.DataFrame(d)
因此,数据框如下所示:
我想根据col1对所有值进行分组,并根据col3的排序(递减ord)得到col2的值,即,我希望最终结果如下: col2=[c,b,a,e,d,f,g,i,h] 我已经尝试了以下方法,它们以升序排列在col2中:
res=dummy.groupby(['col1','col3'])['col2'].apply(sorted).reset_index()
但是上面的结果是[[a]、[b]、[c]…]。我不希望每个元素本身都是一个列表。我如何颠倒顺序?任何帮助都将不胜感激。多谢各位
这里不需要使用groupby,在两列上使用一个简单的
sort_values
就足够了:“col2”的顺序正确,您现在只需将其作为列表返回:
针对评论中的请求:
在这里,我们可以在前面的解决方案的基础上使用
Groupby.agg
来列出数据:尝试:
印刷品:
要以列表形式打印,请使用
series.tolist()
相关问题 更多 >
编程相关推荐