Les Pandas DataFrame.attribuer des arguments

QUESTION

Comment peut - assign être utilisé pour renvoyer une copie de l'original du DataFrame avec plusieurs colonnes ajoutées?

RÉSULTAT SOUHAITÉ

df = pd.DataFrame({'A': range(1, 5), 'B': range(11, 15)})
>>> df.assign({'C': df.A.apply(lambda x: x ** 2), 'D': df.B * 2})
   A   B   C   D
0  1  11   1  22
1  2  12   4  24
2  3  13   9  26
3  4  14  16  28

TENTATIVES

L'exemple ci-dessus les résultats dans:

ValueError: Wrong number of items passed 2, placement implies 1.

FOND

La assign fonction dans les Pandas prend une copie du dataframe rejoint à nouveau la colonne, par exemple

df = df.assign(C=df.B * 2)
>>> df
   A   B   C
0  1  11  22
1  2  12  24
2  3  13  26
3  4  14  28

La 0.19.2 documentation pour cette fonction implique que plus d'une colonne peut être ajouté à la dataframe.

L'attribution de plusieurs colonnes dans la même attribuer est possible, mais vous ne pouvez pas faire référence à d'autres colonnes créé au sein de la même affecter appel.

En outre:

Paramètres:
kwargs : mot-clé, la valeur des paires

mots-clés sont les noms des colonnes.

Le code source de la fonction qu'il accepte un dictionnaire:

Je pense que les docs devrait être plus claire sur la façon de faire ce travail avec plusieurs colonnes pour éviter toute ambiguïté avec un exemple
J'ai refusé de votre tag édition parce que cette question n'a rien à voir avec python. Voir post sur meta. meta.stackoverflow.com/questions/303459/...

OriginalL'auteur Alexander | 2017-02-07