
È possibile applicare i metodi della stringa Python (str) sulla colonna pandas.DataFrame (= pandas.Series) con .str (str accessor).
In questo articolo viene descritto come suddividere qualsiasi sottostringhe di qualsiasi lunghezza da posizione per generare una nuova colonna.
- Taglia le sottostringhe da ogni elemento in pandas.Serie
- Estrarre un capo di una stringa
- Estrarre una coda di una stringa
- Specificare il passaggio
- Estrai un singolo carattere con indice
- Aggiungi come nuova colonna a pandas.DataFrame
- Converti i valori numerici in stringhe e affetta
Vedere l’articolo seguente per l’utilizzo di base delle sezioni in Python.
Vedere l’articolo seguente su come applicare una sezione a un pandas.DataFrame per selezionare righe e colonne.
Il seguente pandas.DataFrame viene utilizzato come esempio.
import pandas as pd
df = pd.DataFrame({'a': ['abcde', 'fghij', 'klmno'],
'b': [123, 456, 789]})
print(df)
# a b
# 0 abcde 123
# 1 fghij 456
# 2 klmno 789
print(df.dtypes)
# a object
# b int64
# dtype: object
Taglia le sottostringhe da ogni elemento in pandas.Serie
Puoi affettare con .str[] per colonne di str.
print(df['a'].str[:2])
# 0 ab
# 1 fg
# 2 kl
# Name: a, dtype: object
È possibile specificare la posizione dalla fine con un valore negativo.
print(df['a'].str[-2:])
# 0 de
# 1 ij
# 2 no
# Name: a, dtype: object
Specificare il passaggio
Puoi specificare step come start:stop:step.
print(df['a'].str[::2])
# 0 ace
# 1 fhj
# 2 kmo
# Name: a, dtype: object
Oltre allo affettare, un singolo carattere può essere estratto per indice.
print(df['a'].str[2])
# 0 c
# 1 h
# 2 m
# Name: a, dtype: object
print(df['a'].str[0])
# 0 a
# 1 f
# 2 k
# Name: a, dtype: object
print(df['a'].str[-1])
# 0 e
# 1 j
# 2 o
# Name: a, dtype: object
Aggiungi come nuova colonna a pandas.DataFrame
Puoi aggiungere la colonna estratta come nuova colonna a pandas.DataFrame.
df['a_head'] = df['a'].str[:2]
print(df)
# a b a_head
# 0 abcde 123 ab
# 1 fghij 456 fg
# 2 klmno 789 kl
Converti i valori numerici in stringhe e affetta
L’utilizzo della funzione di accesso str (.str) per una colonna non stringa generi un errore AttributeError.
# print(df['b'].str[:2])
# AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
Puoi usare il metodo astype() per convertirlo nella stringa str.
print(df['b'].astype(str).str[:2])
# 0 12
# 1 45
# 2 78
# Name: b, dtype: object
Se vuoi trattarlo come un numero, applica nuovamente astype().
print(df['b'].astype(str).str[:2].astype(int))
# 0 12
# 1 45
# 2 78
# Name: b, dtype: int64
