Voglio aggiungere il _xsuffisso a ogni nome di colonna in questo modo:
featuresA = myPandasDataFrame.columns.values + '_x'
Come faccio a fare questo? Inoltre, se volessi aggiungere x_come suffisso, come cambierebbe la soluzione?
Voglio aggiungere il _xsuffisso a ogni nome di colonna in questo modo:
featuresA = myPandasDataFrame.columns.values + '_x'
Come faccio a fare questo? Inoltre, se volessi aggiungere x_come suffisso, come cambierebbe la soluzione?
Risposte:
Puoi usare una listcomprensione:
df.columns = [str(col) + '_x' for col in df.columns]
Ci sono anche metodi integrati come .add_suffix()e .add_prefix()come menzionato in un'altra risposta.
Il seguente è il modo più carino per aggiungere il suffisso secondo me.
df = df.add_suffix('_some_suffix')
Poiché è una funzione che viene chiamata su DataFrame e restituisce DataFrame, puoi usarla nella catena delle chiamate.
inplace=Trueun'opzione di parametro). Altrimenti, perfetto.
Se stai cercando di modificare dfsul posto, l'opzione più economica (e più semplice) è l'aggiunta sul posto direttamente su df.columns(ovvero, utilizzando 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
Per aggiungere un prefisso, useresti in modo simile
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
Un'altra opzione economica è usare una comprensione delle liste con f-stringformattazione (disponibile su 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
E per il prefisso, allo stesso modo,
df.columns = [f'some_prefix{c}' for c in df]
È anche possibile aggiungere * correzioni durante il concatenamento dei metodi. Per aggiungere un suffisso, usaDataFrame.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
Ciò restituisce una copia dei dati. IOW, dfnon viene modificato.
Anche l'aggiunta di prefissi viene eseguita con 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
Che inoltre non modifica df.
add_*fixQuesti sono buoni metodi se stai cercando di eseguire il concatenamento di metodi:
df.some_method1().some_method2().add_*fix(...)
Tuttavia, add_prefix(e add_suffix) crea una copia dell'intero dataframe, solo per modificare le intestazioni. Se ritieni che questo sia uno spreco, ma desideri comunque concatenare, puoi chiamare pipe:
def add_suffix(df):
df.columns += '_some_suffix'
return df
df.some_method1().some_method2().pipe(add_suffix)
newo old) invece di ogni colonna? Grazie.
df = pd.DataFrame([[1,2,3]]*10)-> df.columns, allora userestidf.add_suffix('_x')
df.columns = df.columns.astype(str) + '_x' come mostra il mio primo metodo.
Non ho visto questa soluzione proposta sopra, quindi aggiungendola all'elenco:
df.columns += '_x'
E puoi facilmente adattarti allo scenario del prefisso.
df = pd.DataFrame([[1,2,3]]*10)-> df.columns, allora userestidf.add_suffix('_x')
Conosco 4 modi per aggiungere un suffisso (o prefisso) ai nomi delle colonne:
1- df.columns = [str(col) + '_some_suffix' for col in df.columns]
o
2- df.rename(columns= lambda col: col+'_some_suffix')
o
3- df.columns += '_some_suffix'molto facile.
o, il più carino:
3- df.add_suffix('_some_suffix')
DataFrame.rename.Ritiro di add_prefixeadd_suffix
Nelle versioni future di panda add_prefixe add_suffixsarà deprecato . Il nuovo metodo consigliato consiste nell'utilizzare 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
Utilizzando renamecon axis=1e la formattazione della stringa:
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
Per sovrascrivere effettivamente i nomi delle colonne, possiamo assegnare i valori restituiti al nostro df:
df = df.rename('col_{}'.format, axis=1)
oppure usa inplace=True:
df.rename('col_{}'.format, axis=1, inplace=True)