首页 > 解决方案 > 在熊猫中将一列按另一列分组?

问题描述

我想获得一列的中值并使用另一列的关联值。例如,

   col1  col2 index
0     1     3     A
1     2     4     A
2     3     5     A
3     4     6     B
4     5     7     B
5     6     8     B
6     7     9     B

我按索引分组得到col 1的中值,并使用col 2的关联值得到

   col1  col2 index
    2     4     A
    5     7     B

我不能使用索引 B 的实际中值,因为它将平均两个中间值,并且该值在 col 2 中没有相应的值。最好的方法是什么?groupby 方法会起作用吗?或者以某种方式使用排序?我需要定义自己的功能吗?

标签: pandassortingpandas-groupby

解决方案


似乎你需要采取中间位置而不是median来自原始 df

df.groupby('index')[['col1','col2']].apply(lambda x : pd.Series(sorted(x.values.tolist())[len(x)//2]))
Out[297]: 
       0  1
index      
A      2  4
B      6  8

推荐阅读