根据数据框中的另一列查找最大条目

时间:2014-10-14 00:52:26

标签: python numpy pandas dataframe series

假设我有一个包含3列的数据框:A, B, C。我希望按列A进行分组,并找到C中包含最大条目的行(对于每个唯一的A),以便我可以将row.A, row.B, row.C存储到其他地方的字典中。 / p>

在不使用iterrows的情况下,最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

# generate sample data
import pandas as pd
df = pd.DataFrame(np.random.randint(0,10,(10,3)))
df.columns = ['A','B','C']

# sort by C, group by A, take last row of each group
df.sort('C').groupby('A').nth(-1)

答案 1 :(得分:1)

这是另一种方法。如果df是DataFrame,则可以编写df.groupby('A').apply(lambda d: d.ix[d['C'].argmax()])。 例如,

In [96]: df
Out[96]: 
    A  B  C
0   1  0  3
1   3  0  4
2   0  4  5
3   2  4  0
4   3  1  1
5   1  6  2
6   3  6  0
7   4  0  1
8   2  3  4
9   0  5  0
10  7  6  5
11  3  1  2

In [97]: g = df.groupby('A').apply(lambda d: d['C'].argmax())

In [98]: g
Out[98]: 
A
0     2
1     0
2     8
3     1
4     7
7    10
dtype: int64

In [99]: df.ix[g.values]
Out[99]: 
    A  B  C
2   0  4  5
0   1  0  3
8   2  3  4
1   3  0  4
7   4  0  1
10  7  6  5