2015-07-07 28 views
10

Sto riscontrando problemi nell'applicare lettere maiuscole a una colonna nel mio DataFrame.Applicazione di lettere maiuscole a una colonna in dataframe panda

dataframe è df.

1/2 ID è la testa di colonna che è necessario applicare MAIUSCOLE.

Il problema è che i valori sono composti da tre lettere e tre numeri. Ad esempio, rrr123 è uno dei valori.

df['1/2 ID'] = map(str.upper, df['1/2 ID']) 

ho ottenuto un errore:

TypeError: descriptor 'upper' requires a 'str' object but received a 'unicode' error.

Come posso applicare maiuscolo per le prime tre lettere nella colonna del dataframe df?

+0

str è un metodo della classe str e si aspetta una str non unicode, 'str .upper (u "foo") -> error' –

risposta

11

Questo dovrebbe funzionare:

df['1/2 ID'] = map(lambda x: x.upper(), df['1/2 ID']) 
+0

mi dà un errore - L'oggetto '' float '' non ha attributo 'upper' ' – Gil5Ryan

+0

Ah ok, quindi hai alcuni valori che non sono stringhe. Cambia 'x.upper()' in 'str (x) .upper()' o 'unicode (x) .upper()'. –

+0

tu sei l'uomo, lo str (x) .upper() ha funzionato! – Gil5Ryan

5

str.upper() vuole una pianura vecchio Python 2 stringa

unicode.upper() vorranno una non unicode una stringa (o si ottiene TypeError: descrittore 'superiore' richiesto un 'unicode' oggetto ma ha ricevuto una "str")

Quindi suggerirei di utilizzare la digitazione anatra e di chiamare .upper() su ciascuno dei vostri elementi, ad es.

df['1/2 ID'].apply(lambda x: x.upper(), inplace=True) 
+0

Grazie anche per il tuo aiuto! – Gil5Ryan

23

Se la versione di panda è una versione recente allora si può solo utilizzare il metodo della stringa Vectorised upper:

df['1/2 ID'].str.upper() 
+0

fantastico, come si fa a posto? non c'è l'opzione arg su upper()? – iratzhash

+0

@iratzhash non si può assegnare indietro così 'df ['1/2 ID'] = df ['1/2 ID']. Str.upper()' – EdChum

+0

Sì, l'ho capito. Ho pensato che sarebbe comp. costoso. Già ai margini delle mie risorse computazionali. – iratzhash

Problemi correlati