2016-06-21 23 views
5

Alcuni joker hanno creato un database/applet Lotus per il monitoraggio dei problemi di progettazione nella nostra azienda. Lo scherzo è che l'informazione chiave è stata nominata con un carattere speciale ... un segno numerico (tag hash, cancelletto, \ u0023).nome colonna dataframe panda: rimuovere special charater

campione abbreviata:

KA#   Issue Date  Current Position 
27144  1/9/2014  Accounting 
27194  12/20/2012  Engineering 
32474  4/21/2008  Engineering 
32623-HOLD 4/25/2016  Engineering 
32745  11/13/2012  SEPE 
32812  10/30/2013  Engineering 
32817  12/7/2012  Purchasing 
32839  1/8/2013  SEPE 

I uscita questa tabella (4K righe, 15 colonne) in un file csv e processo in python3 come dataframe panda.

Genero varie uscite. Se uso qualcosa come:

df.iloc[:,[0,3,1,8,9,10]] 

ottengo uscita appropriato e la colonna chiave si presenta come "KA#". (Quando dico "colonna chiave", intendo "la cosa più importante" ... NON "indice" .Rengo un indice seriale)

Sfortunatamente, le persone a volte pasticciano con l'ordine delle colonne in Lotus tra le mie esportazioni in csv così Non posso garantire che "KA#" sarà un qualsiasi numero di colonna. Vorrei utilizzare i nomi delle colonne:

df.loc[:,["KA#","Issue Date","Current Position"]] 

ma la colonna "KA#" è pieno di Nan.

Grazie per l'aiuto che puoi offrire.

Infine, se provo a cambiare titolo "KA#" semplicemente "KA":

df['KA#'].name = 'KA' 

tiri un KeyError e

df = df.rename(columns={"KA#": "ka"}) 

viene completamente ignorata. La colonna si presenta come "KA#".

Qualcuno può pensare a un modo per sbarazzarsi o gestire quel simbolo? Mi piacerebbe persino accontentarmi di una regex a questo punto.

Grazie per l'aiuto che puoi offrire.

risposta

5

uso str.replace:
df.columns=df.columns.str.replace('#','')

È possibile controllare questo nel documentation.

+1

E in particolare, assegnare questo risultato a 'df.columns'. – chrisaycock

+0

sì puoi vedere questo nella documentazione. – shivsn

+0

Mi sono preso cura del mio problema perché avevo solo una colonna con un carattere improprio e volevo che sparisse. Quindi, "risposta". e "grazie" a Shivsn. Se volessi scegliere come target una particolare colonna, questa sarebbe una metodologia piuttosto maldestra. Penso che mi preoccuperò di quello quando ci arrivo. –