Pandas GroupBy并选择具有特定列中最小值的行
- 论坛
- Pandas GroupBy并选择具有特定列中最小值的行
12 浏览
Pandas GroupBy并选择具有特定列中最小值的行
我有一个包含列A、B和C的DataFrame。对于A的每个值,我想选择B列中最小值的行。
即,从以下内容中:
df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 2], 'B': [4, 5, 2, 7, 4, 6], 'C': [3, 4, 10, 2, 4, 6]}) A B C 0 1 4 3 1 1 5 4 2 1 2 10 3 2 7 2 4 2 4 4 5 2 6 6
我想得到:
A B C 0 1 2 10 1 2 4 4
目前我是按列A进行分组,然后创建一个指示我要保留的行的值:
a = data.groupby('A').min() a['A'] = a.index to_keep = [str(x[0]) + str(x[1]) for x in a[['A', 'B']].values] data['id'] = data['A'].astype(str) + data['B'].astype('str') data[data['id'].isin(to_keep)]
我确信有更简单的方法来做到这一点。
我在这里看到很多答案都使用了MultiIndex,但我更愿意避免使用它。
谢谢您的帮助。