2013-05-27 18 views
6

C'è un modo per cambiare alcuni nomi di colonne in dataframe panda usando lambda, ma non tutti? Ad esempio, supponiamo che questo frame di dati abbia colonne il cui nome sia osx, centos, ubunto, windows. In questa cornice di dati, voglio sostituire tutti i nomi di colonna con quel nome della colonna aggiunto per x, quindi in questo caso, è possibile rinominare il nome della colonna da:Come posso cambiare il nome delle colonne arbitrarie nei panda df usando la funzione lambda?

df.rename(columns=lambda x: x+'x') 

Tuttavia, se voglio rinominare tutti i nomi di colonna diverso da ubunto, come posso farlo? Quindi quello che voglio ottenere è il data frame il cui nome è osxx, centosx, ubunto, windowsx. In realtà, il mio vero frame di dati ha molte più colonne, quindi non mi piace scrivere uno per uno usando la normale sintassi del dizionario e invece preferire la funzione lambda se è fattibile.

Grazie.

risposta

7

Un ternary operator potrebbe raggiungere il tuo obiettivo:

os_list = ['osxx', 'centos', 'windowsx']  
df.rename(columns=lambda x: x+'x' if x in os_list else x) 
+0

Grazie. Penso che 'os_list' dovrebbe essere migliore per includere solo le colonne che voglio rinominare (cioè os_list = ['osx', 'centos', 'windows']' in questo caso). – Blaszard

+0

Ci scusiamo per l'errore, l'ho rimosso dalla lista. – waitingkuo

Problemi correlati