通过某种方法应用groupby后保留整个行

时间:2019-01-04 14:48:54

标签: python pandas

我有一个数据框,如下所示: data_frame:

column_A column_B, column_C
  2        3        5            row= 0
  2        3        6            row= 1
  3        4        2            row= 2
  3        4        9            row= 3

尝试做的是检查 column_A column_B 具有相同值的行,并为获得的每个组获取最大值: 更准确地说:在我的例子中,我想得到第1行和第3行。 因此,预期输出应为:

column_A column_B, column_C
  2        3        6            row= 1
  3        4        9            row= 3

我尝试使用 max方法 groupby 应用于 column_C :似乎可行,但是我得到的输出是column_C。这是我的代码:

test_df=pd.DataFrame([[2,3,5],[2,3,6],[3,4,2],[3,4,9]],columns=['column_A','column_B','column_C'])
result= test_df.groupby(['column_A','column_B'], sort=False)['column_C'].max()
print(result)

这是结果

column_A  column_B
2         3           6
3         4           9
Name: column_C, dtype: int64

我知道为什么要有一个序列(因为我在column_C上应用了max方法),但是我想不出一种方法来获取对应的行,而不仅仅是获取column_C值。

1 个答案:

答案 0 :(得分:2)

使用sort_values + drop_duplicates

df.sort_values('column_C').drop_duplicates(['column_A','column_B'],keep='last')
Out[186]: 
   column_A  column_B  column_C
1         2         3         6
3         3         4         9