我有一个如下的pandas数据框。我想基于所有三个列进行分组,保留具有Col1最大值的组。
我尝试了以下代码,但它返回每个组的最后一行,而我想按col3排序并保留具有最大col3值的组。
例如:这里我想要放弃第一组,因为2 < 5,所以我想保留col3值为5的组。
import pandas as pd
df = pd.DataFrame({'col1':['A', 'A', 'A', 'A', 'B', 'B'], 'col2':['1', '1', '1', '1', '2', '3'], 'col3':['5', '5', '2', '2', '2', '3']})
df
col1 col2 col3
0 A 1 5
1 A 1 5
2 A 1 2
3 A 1 2
4 B 2 2
5 B 3 3
我期望的输出结果
col1 col2 col3
0 A 1 5
1 A 1 5
4 B 2 2
5 B 3 3
我尝试了以下代码,但它返回每个组的最后一行,而我想按col3排序并保留具有最大col3值的组。
df.drop_duplicates(keep='last', subset=['col1','col2','col3'])
col1 col2 col3
1 A 1 5
3 A 1 2
4 B 2 2
5 B 3 3
例如:这里我想要放弃第一组,因为2 < 5,所以我想保留col3值为5的组。
df.sort_values(by=['col1', 'col2', 'col3'], ascending=False)
a_group = df.groupby(['col1', 'col2', 'col3'])
for name, group in a_group:
group = group.reset_index(drop=True)
print(group)
col1 col2 col3
0 A 1 2
1 A 1 2
col1 col2 col3
0 A 1 5
1 A 1 5
col1 col2 col3
0 B 2 2
col1 col2 col3
0 B 3 3