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 pairesmots-clés sont les noms des colonnes.
Le code source de la fonction qu'il accepte un dictionnaire:
def assign(self, **kwargs):
"""
.. versionadded:: 0.16.0
Parameters
----------
kwargs : keyword, value pairs
keywords are the column names. If the values are callable, they are computed
on the DataFrame and assigned to the new columns. If the values are not callable,
(e.g. a Series, scalar, or array), they are simply assigned.
Notes
-----
Since ``kwargs`` is a dictionary, the order of your
arguments may not be preserved. The make things predicatable,
the columns are inserted in alphabetical order, at the end of
your DataFrame. Assigning multiple columns within the same
``assign`` is possible, but you cannot reference other columns
created within the same ``assign`` call.
"""
data = self.copy()
# do all calculations first...
results = {}
for k, v in kwargs.items():
if callable(v):
results[k] = v(data)
else:
results[k] = v
# ... and then assign
for k, v in sorted(results.items()):
data[k] = v
return data
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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer plusieurs colonnes en fournissant à chaque nouvelle colonne comme un argument mot-clé:
Je suis votre exemple dictionnaire de travailler en analysant le dictionnaire comme mot-clé arguments à l'aide de
**
:Il semble que
assign
devrait être en mesure de prendre un dictionnaire, mais il n'a pas l'air d'être pris en charge actuellement basé sur le code source que vous avez posté.Le résultat de sortie:
OriginalL'auteur root