2013-10-22 51 views
1

我們可以使用.idxmax來獲取數據幀(df)的最大值。我的問題是,我有一個df與幾列(超過10),其中一列具有相同值的標識符。我需要的最大值來提取標識符:在大熊貓數據框中提取具有最大值的行

> DF

id value 
a 0 
b 1 
b 1 
c 0 
c 2 
c 1 

現在,這是我想要的東西:

> DF

id value 
a 0 
b 1 
c 2 

我想用df.groupy(['id'])得到它,但它是一個有點棘手:

df.groupby(["id"]).ix[df['value'].idxmax()]

當然,這是行不通的。我擔心我不在正確的道路上,所以我想我會問你們!謝謝!

回答

4

關閉! Groupby的ID,然後使用列;返回每個組的最大值。

In [14]: df.groupby('id')['value'].max() 
Out[14]: 
id 
a  0 
b  1 
c  2 
Name: value, dtype: int64 

歐普希望提供這些地點回到幀,只需要創建一個轉換和分配。

In [17]: df['max'] = df.groupby('id')['value'].transform(lambda x: x.max()) 

In [18]: df 
Out[18]: 
    id value max 
0 a  0 0 
1 b  1 1 
2 b  1 1 
3 c  0 2 
4 c  2 2 
5 c  1 2