我有一个数据框,如下所示: 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值。
答案 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