2 votes

Nom de colonne repetition dans le cadre de données pandas

Je suis en train d'essayer de lire des données mais les noms de colonnes reviennent de manière répétée.

Voici un exemple de code:

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)
    if A2C_TT.size > 0:
        print (A2C_TT)

Sortie:

enter image description here

Je n'ai pas besoin des noms de colonnes. Que devrais-je faire?

4voto

Sheldon Points 143

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X