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 ?
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 ?
Antworten:
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.
inplace=True
Parameteroption hat). Ansonsten perfekt.
Wenn Sie versuchen, Änderungen df
an Ort und Stelle vorzunehmen, ist die billigste (und einfachste) Option die direkte Hinzufügung direkt an df.columns
(dh mit Index.__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]
Es ist auch möglich, während der Methodenverkettung * Korrekturen hinzuzufügen. Verwenden Sie, um ein Suffix hinzuzufügenDataFrame.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
.
add_*fix
Dies sind gute Methoden, wenn Sie versuchen, eine Methodenverkettung durchzuführen:
df.some_method1().some_method2().add_*fix(...)
Allerdings add_prefix
(und add_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 anrufen pipe
:
def add_suffix(df):
df.columns += '_some_suffix'
return df
df.some_method1().some_method2().pipe(add_suffix)
new
oder old
) 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.
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')
DataFrame.rename
.Abschreibung von add_prefix
undadd_suffix
In zukünftigen Versionen von Pandas add_prefix
und add_suffix
wird veraltet sein . Die neue empfohlene Methode lautet DataFrame.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
mit axis=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)