4 votes

Les pandas transposent les lignes en colonnes sur la base de la première colonne.

J'ai la base de données suivante.

Column_1   Column_2
Name       Xxxx
Age        28
Gender     M
Name       yyyy
Age        26
Gender     F

Le résultat attendu est le suivant

Name   Age   Gender
Xxxx   28    M
yyyy   26    F

J'ai essayé df.T(), mais il écrit chaque nom, âge et sexe dans des colonnes séparées.

Comment obtenir le résultat ci-dessus en python/pandas.

3voto

U9-Forward Points 8640

Ou essayez groupby con agg y pd.Series.explode :

>>> df.groupby('Column_1').agg(list).T.apply(pd.Series.explode).reset_index(drop=True).rename_axis(columns=None)
  Age Gender  Name
0  28      M  Xxxx
1  26      F  yyyy
>>>

2voto

user1740577 Points 669

Essayez ceci :

df1 = pd.DataFrame( {
    'Column_1': ['Name', 'Age', 'Gender', 'Name', 'Age', 'Gender'],
    'Column_2': ['Xxxx', '28', 'M', 'yyyy', '26', 'F']
})
df2 = pd.DataFrame(df1.groupby('Column_1')['Column_2'].apply(list).to_dict())
print(df2)

Sortie :

   Age Gender  Name
0  28      M   Xxxx
1  26      F   yyyy

2voto

not_speshal Points 2164

Essayez avec groupby y pivot :

df["idx"] = df.groupby("Column_1").cumcount()

>>> df.pivot("idx", "Column_1", "Column_2").reset_index(drop=True).rename_axis(columns=None)
  Age Gender  Name
0  28      M  Xxxx
1  26      F  Yyyy

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