Ich möchte _xjedem 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 _xjedem 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 listVerstä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=TrueParameteroption hat). Ansonsten perfekt.
Wenn Sie versuchen, Änderungen dfan 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-stringFormatierung (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 dfwird 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_*fixDies 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)
newoder 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_prefixundadd_suffix
In zukünftigen Versionen von Pandas add_prefixund add_suffixwird 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 renamemit axis=1und 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)