Я написал фрейм данных, используя pandas в python, который состоит из чисел и строк:
import pandas as pd
import numpy as np
d = {'col1': [1, 5,1,5,1,5,1,5], 'col2': [20,20,40,40,20,20,40,40],\
'col3': np.arange(1,9)*0.1,\
'col4':['Jen','Ross','Chan','Mon','Joe','Phebe','Janice','Gunter']}
df = pd.DataFrame(data=d)
Фрейм данных выглядит следующим образом:
col1 col2 col3 col4
0 1 20 0.1 Jen
1 5 20 0.2 Ross
2 1 40 0.3 Chan
3 5 40 0.4 Mon
4 1 20 0.5 Joe
5 5 20 0.6 Phoebe
6 1 40 0.7 Janice
7 5 40 0.8 Gunther
Используя groupby, я хочунайдите минимальное значение col3 для каждой уникальной пары (x, y), где x принадлежит к col1, а y принадлежит к col2. Мне также нужно знать, какое соответствующее имя в col4 приводит к такому минимуму. Я сделал:
df2=df.groupby(['col1','col2']).min()
print(df2)
Я получил:
col1 col2 col3 col4
1 20 0.1 Jen
40 0.3 Chan
5 20 0.2 Phoebe
40 0.4 Gunther
Как видите, последние две строки неверны. Глядя на пару (5,20) в таблице, минимальное значение составляет 0,2 (правильно), но появляется для Росса (не для Фиби). Как я могу это исправить?