Ich möchte _x
jedem Spaltennamen das folgende Suffix hinzufügen :
featuresA = myPandasDataFrame.columns.values + '_x'
Wie mache ich das? x_
Wie würde sich die Lösung ändern , wenn ich als Suffix hinzufügen wollte ?
Sie können ein list
Verständnis verwenden:
df.columns = [str(col) + '_x' for col in df.columns]
Es gibt auch integrierte Methoden wie .add_suffix()
und .add_prefix()
wie in einer anderen Antwort erwähnt.
Das Folgende ist meiner Meinung nach der schönste Weg, ein Suffix hinzuzufügen.
df = df.add_suffix('_some_suffix')
Da es sich um eine Funktion handelt, die in DataFrame aufgerufen wird und DataFrame zurückgibt, können Sie sie in der Kette der Aufrufe verwenden.
quelle
inplace=True
Parameteroption hat). Ansonsten perfekt.Elegante Verkettung vor Ort
Wenn Sie versuchen, Änderungen
df
an Ort und Stelle vorzunehmen, ist die billigste (und einfachste) Option die direkte Hinzufügung direkt andf.columns
(dh mitIndex.__iadd__
).df = pd.DataFrame({"A": [9, 4, 2, 1], "B": [12, 7, 5, 4]}) df A B 0 9 12 1 4 7 2 2 5 3 1 4
df.columns += '_some_suffix' df A_some_suffix B_some_suffix 0 9 12 1 4 7 2 2 5 3 1 4
Um ein Präfix hinzuzufügen, würden Sie es ähnlich verwenden
df.columns = 'some_prefix_' + df.columns df some_prefix_A some_prefix_B 0 9 12 1 4 7 2 2 5 3 1 4
Eine weitere kostengünstige Option ist die Verwendung eines Listenverständnisses mit
f-string
Formatierung (verfügbar unter Python3.6 +).df.columns = [f'{c}_some_suffix' for c in df] df A_some_suffix B_some_suffix 0 9 12 1 4 7 2 2 5 3 1 4
Und für das Präfix ähnlich
df.columns = [f'some_prefix{c}' for c in df]
Methodenverkettung
Es ist auch möglich, während der Methodenverkettung * Korrekturen hinzuzufügen. Verwenden Sie, um ein Suffix hinzuzufügen
DataFrame.add_suffix
df.add_suffix('_some_suffix') A_some_suffix B_some_suffix 0 9 12 1 4 7 2 2 5 3 1 4
Dies gibt eine Kopie der Daten zurück. IOW
df
wird nicht geändert.Das Hinzufügen von Präfixen erfolgt ebenfalls mit
DataFrame.add_prefix
.df.add_prefix('some_prefix_') some_prefix_A some_prefix_B 0 9 12 1 4 7 2 2 5 3 1 4
Was sich auch nicht ändert
df
.Kritik an
add_*fix
Dies sind gute Methoden, wenn Sie versuchen, eine Methodenverkettung durchzuführen:
Allerdings
add_prefix
(undadd_suffix
) erstellt eine Kopie des gesamten Datenrahmen, nur die Header zu ändern. Wenn Sie glauben, dass dies verschwenderisch ist, aber dennoch verketten möchten, können Sie anrufenpipe
:def add_suffix(df): df.columns += '_some_suffix' return df df.some_method1().some_method2().pipe(add_suffix)
quelle
new
oderold
) enthalten ? Vielen Dank.df = pd.DataFrame([[1,2,3]]*10)
->df.columns
, dann würden Siedf.add_suffix('_x')
df.columns = df.columns.astype(str) + '_x'
wie meine erste Methode zeigt.Ich habe diese oben vorgeschlagene Lösung nicht gesehen, also füge sie der Liste hinzu:
df.columns += '_x'
Und Sie können sich leicht an das Präfix-Szenario anpassen.
quelle
df = pd.DataFrame([[1,2,3]]*10)
->df.columns
, dann würden Siedf.add_suffix('_x')
Ich kenne 4 Möglichkeiten, um den Namen Ihrer Spalte ein Suffix (oder Präfix) hinzuzufügen:
1-
df.columns = [str(col) + '_some_suffix' for col in df.columns]
oder
2-
df.rename(columns= lambda col: col+'_some_suffix')
oder
3-
df.columns += '_some_suffix'
viel einfacher.oder das schönste:
3-
df.add_suffix('_some_suffix')
quelle
Verwenden von
DataFrame.rename
.Abschreibung von
add_prefix
undadd_suffix
In zukünftigen Versionen von Pandas
add_prefix
undadd_suffix
wird veraltet sein . Die neue empfohlene Methode lautetDataFrame.rename
:df = pd.DataFrame({'A': range(3), 'B': range(4, 7)}) print(df) A B 0 0 4 1 1 5 2 2 6
Verwenden
rename
mitaxis=1
und Zeichenfolgenformatierung:df.rename('col_{}'.format, axis=1) # or df.rename(columns='col_{}'.format) col_A col_B 0 0 4 1 1 5 2 2 6
Um Ihre Spaltennamen tatsächlich zu überschreiben, können wir die zurückgegebenen Werte unseren zuweisen
df
:df = df.rename('col_{}'.format, axis=1)
oder verwenden
inplace=True
:df.rename('col_{}'.format, axis=1, inplace=True)
quelle