Ausgabe
Ich habe angefangen, Python Pandas zu lernen. Also im Grunde bin ich ein R-Benutzer und benutze Tidyverse stark. Also versuche ich, Pandas auf die gleiche Weise wie das Tidyverse zu verwenden. Also versuche ich, diesen Code auszuführen, der mir einen Fehler auslöst.
(
pd.DataFrame(
{'A':[1,2,3],
'B':[4,5,6]}
)
.assign(A = lambda x: x.A + 1,
B = lambda x: x.B + x.A,
A = 1)
)
SyntaxError: Schlüsselwortargument wiederholt: A
Wie könnte ich also Pandas auf eine Art und tidyverse
Weise verwenden? Genauer gesagt, gibt es eine Methode in Pandas, die wie die funktioniert dplyr::mutate
?
Lösung
Ein (vielleicht offensichtlicher) Ansatz könnte darin bestehen, mehrere zu verwenden assign
:
(pd.DataFrame({'A':[1,2,3],
'B':[4,5,6]})
.assign(A = lambda x: x.A + 1,
B = lambda x: x.B + x.A,)
.assign(A = 1)
)
Eine andere könnte sein, pipe
und eine Funktion zu verwenden:
def process(df):
df['A'] = df['A']+1
df['B'] = df['A']+df['B']+1
df['A'] = 1
return df
(pd.DataFrame({'A':[1,2,3],
'B':[4,5,6]})
.pipe(process)
)
Ausgang:
A B
0 1 6
1 1 8
2 1 10
Beantwortet von – mozway
Antwort geprüft von – Jay B. (FixError Admin)