1197 votes

Ajout d'une nouvelle colonne à un DataFrame existant dans des pandas python

J'ai un DataFrame nommés les colonnes et les lignes indexées avec pas en continu de numéros, comme dans le code:

df1 = DataFrame(np.random.randn(10, 4), columns=['a', 'b', 'c', 'd'])
mask = df1.applymap(lambda x: x <-0.7)
df1 = df1[-mask.any(axis=1)]
sLength = len(df1['a'])
e = Series(np.random.randn(sLength)) 

Je voudrais ajouter une colonne " e " à l'existant df et ne pas changer quoi que ce soit dans le df. (La série a toujours de la même longueur qu'un dataframe.) J'ai essayer différentes version d' join, append, merge mais n'ont pas ce que je veux, erreur au plus.

La série et df est déjà donné et code ci-dessus est seulement pour illustrer l'exemple.

Je suis sûr qu'il ya quelque moyen facile pour qui mais ne peut pas le comprendre

1236voto

joaquin Points 22450

Utilisez les index df1 d'origine pour créer la série:

 df1['e'] = Series(np.random.randn(sLength), index=df1.index)
 

287voto

Kathirmani Points 524

C'est le moyen simple d'ajouter une nouvelle colonne: df['e'] = e

57voto

Andy Hayden Points 38010

Faire cela directement via numpy sera le plus efficace:

 df1['e'] = np.random.randn(sLength)
 

Notez ma suggestion originale (très ancienne) d’utiliser map (ce qui est beaucoup plus lent):

 df1['e'] = df1['a'].map(lambda x: np.random.random())
 

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