Panda’s vervangen een teken in alle kolomnamen

Ik heb dataframes met kolomnamen (afkomstig uit .csv-bestanden) die (en )bevatten en ik zou ze willen vervangen door _.

Hoe kan ik dat voor alle kolommen doen?


Antwoord 1, autoriteit 100%

Gebruik str.replace:

df.columns = df.columns.str.replace("[()]", "_")

Voorbeeld:

df = pd.DataFrame({'(A)':[1,2,3],
                   '(B)':[4,5,6],
                   'C)':[7,8,9]})
print (df)
   (A)  (B)  C)
0    1    4   7
1    2    5   8
2    3    6   9
df.columns = df.columns.str.replace(r"[()]", "_")
print (df)
   _A_  _B_  C_
0    1    4   7
1    2    5   8
2    3    6   9

Antwoord 2, autoriteit 2%

Oudere versies van panda’s werken niet met het bovenstaande geaccepteerde antwoord. Iets als dit is nodig:

df.columns = [c.replace("[()]", "_") for c in list(df.columns)]

Antwoord 3

De vierkante haken worden gebruikt om een ​​reeks tekens af te bakenen die u wilt extraheren. bijvoorbeeld:

r"[Nn]ational"

zal beide gevallen extraheren waar we “Nationaal” en “nationaal” hebben, d.w.z. het extraheert N of n.

Other episodes