Vous pouvez simplement appeler la méthode values
après head
:
for i in range(1, len(df_A2C), 1):
A2C_TT= df_A2C.loc[(df_A2C['TO_ID'] == i)].sort_values('DURATION_H').head(1).values
if A2C_TT.size > 0:
print (A2C_TT)
EDIT:
En passant, je pense que vous pouvez vous en sortir sans itérer sur votre dataframe pandas.
J'ai créé un dataframe d'exemple pour illustrer ceci:
df = pd.DataFrame()
df['COL_A'] = [1, 2, 3, 4, 5, 1, 6, 6]
df['COL_B'] = [100,200,666,200, 451, 42, 1664, 1665]
Voici votre extrait de code modifié pour ce dataframe:
for i in range(1, len(df), 1):
A2C_TT= df.loc[(df['COL_A'] == i)].sort_values('COL_B').head(1)
if A2C_TT.size > 0:
print (A2C_TT)
Je pense que vous pouvez simplement trier par COL_A
(votre TO_ID
) puis par COL_B
(votre DURATION_H
) et ensuite regrouper par COL_A
, en prenant la première valeur de chaque groupe:
df.sort_values(['COL_A', 'COL_B'], ascending=[True,True]).groupby('COL_A').first()
Les deux extraits produisent le même dataframe:
COL_B
COL_A
1 42
2 200
3 666
4 200
5 451
6 1664