Ricerca…


Utilizzando .iloc

.iloc usa interi per leggere e scrivere dati su un DataFrame.

Per prima cosa, creiamo un DataFrame:

df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
                   'two': [6, 7, 8, 9, 10],
              }, index=['a', 'b', 'c', 'd', 'e'])

Questo DataFrame si presenta come:

   one  two
a    1    6
b    2    7
c    3    8
d    4    9
e    5   10

Ora possiamo usare .iloc per leggere e scrivere valori. Leggiamo la prima riga, prima colonna:

print df.iloc[0, 0]

Questo verrà stampato:

1

Possiamo anche impostare valori. Consente di impostare la seconda colonna, la seconda riga su qualcosa di nuovo:

df.iloc[1, 1] = '21'

E poi dai un'occhiata per vedere cosa è successo:

print df 

   one two
a    1   6
b    2  21
c    3   8
d    4   9
e    5  10

Utilizzando .loc

.loc utilizza le etichette per leggere e scrivere dati.

Impostiamo un DataFrame:

df = pd.DataFrame({'one': [1, 2, 3, 4, 5],
                   'two': [6, 7, 8, 9, 10],
                  }, index=['a', 'b', 'c', 'd', 'e'])

Quindi possiamo stampare DataFrame per dare un'occhiata alla forma:

print df 

Questo uscirà

   one  two
a    1    6
b    2    7
c    3    8
d    4    9
e    5   10

Utilizziamo le etichette di colonne e righe per accedere ai dati con .loc. Imposta la riga 'c', la colonna 'due' sul valore 33:

df.loc['c', 'two'] = 33 

Ecco come appare DataFrame:

   one  two
a    1    6
b    2    7
c    3   33
d    4    9
e    5   10

Da notare che l'uso di df['two'].loc['c'] = 33 potrebbe non riportare un avviso, e potrebbe anche funzionare, tuttavia, usando df.loc['c', 'two'] è garantito che funzioni correttamente mentre il primo non lo è.

Possiamo leggere fette di dati, per esempio

print df.loc['a':'c'] 

stamperà le righe da a a c. Questo è inclusivo.

   one  two
a    1    6
b    2    7
c    3    8

E infine, possiamo fare entrambi insieme:

print df.loc['b':'d', 'two']

Emetterà le righe da b a c della colonna 'due'. Si noti che l'etichetta della colonna non viene stampata.

b    7
c    8
d    9

Se .loc viene fornito con un argomento intero che non è un'etichetta, viene ripristinato l'indicizzazione dei numeri interi degli assi (il comportamento di .iloc). Ciò rende possibile l'indicizzazione di etichette e interi misti:

df.loc['b', 1]

restituirà il valore nella seconda colonna (indice che inizia da 0) nella riga 'b':

7


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow