179 votes

Comment combiner deux cadres de données ?

J'utilise des cadres de données Pandas. J'ai un cadre de données initial, disons D . J'en extrais deux cadres de données comme ceci :

A = D[D.label == k]
B = D[D.label != k]

Je veux combiner A y B afin que je puisse les avoir comme un seul DataFrame, quelque chose comme une opération d'union. L'ordre des données n'est pas important. Cependant, lorsque nous échantillonnons A y B de D ils conservent leurs index de D .

224voto

Joran Beasley Points 28451

Avis de dépréciation : DataFrame.append y Series.append étaient déprécié dans la v1.4.0

Je crois que vous pouvez utiliser le append méthode

bigdata = data1.append(data2, ignore_index=True)

pour conserver leurs index, il suffit de ne pas utiliser les ignore_index mot-clé...

147voto

ostrokach Points 4704

Vous pouvez également utiliser pd.concat qui est particulièrement utile lorsque vous joignez plus de deux cadres de données :

bigdata = pd.concat([data1, data2], ignore_index=True, sort=False)

73voto

pelumi Points 94

J'ai pensé ajouter ceci ici au cas où quelqu'un le trouverait utile. @ostrokach a déjà mentionné la façon dont vous pouvez fusionner les cadres de données entre les lignes.

df_row_merged = pd.concat([df_a, df_b], ignore_index=True)

Pour fusionner plusieurs colonnes, vous pouvez utiliser la syntaxe suivante :

df_col_merged = pd.concat([df_a, df_b], axis=1)

28voto

martin-martin Points 445

Si vous travaillez avec des données volumineuses et avez besoin de concaténer plusieurs ensembles de données en appelant concat de nombreuses fois peut devenir gourmand en performances.

Si vous ne voulez pas créer un nouveau df à chaque fois, vous pouvez à la place agréger les changements et appeler concat une seule fois :

frames = [df_A, df_B]  # Or perform operations on the DFs
result = pd.concat(frames)

Ce point est signalé dans la documentation de pandas sous la rubrique concaténation d'objets au bas de la section) :

Note : Il convient toutefois de noter que concat (et donc append ) fait une copie complète des données, et que le fait de réutiliser constamment cette fonction peut entraîner une baisse significative des performances. Si vous devez utiliser l'opération sur plusieurs ensembles de données, utilisez une compréhension de liste.

5voto

Mohsin Mahmood Points 655

Si vous voulez mettre à jour/remplacer les valeurs du premier dataframe df1 avec les valeurs du deuxième cadre de données df2 . vous pouvez le faire en suivant les étapes suivantes -

Étape 1 : Définir l'index du premier dataframe (df1)

df1.set_index('id')

Étape 2 : Définir l'index de la deuxième trame de données (df2)

df2.set_index('id')

et enfin mettre à jour le dataframe en utilisant le snippet suivant -

df1.update(df2)

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