[FIXED] Wie verwende ich dieselbe Variable erneut in der Pandas-Assign()-Methode?

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 tidyverseWeise 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, pipeund 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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] Pipdeptree-JSON-Ergebnis in CSV

Ausgabe Das json-Ergebnis von pipdeptreehat die Form: [ { "package": { "key": "ansible-base", "package_name": "ansible-base", "installed_version": "2.10.8", "required_version":…