Я группирую свой набор данных по столбцу A, а затем хотел бы взять минимальное значение в столбце B и соответствующее значение в столбце C.
data = pd.DataFrame({'A': [1, 2], 'B':[ 2, 4], 'C':[10, 4]})
data
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)]
Я уверен, что есть гораздо более прямойвперед способ сделать это.Я видел много ответов, в которых используется мультииндексация, но я хотел бы сделать это, не добавляя мультииндексацию к моему фрейму данных.Спасибо за вашу помощь.