Ho un DataFrame
di pandas:
import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df
Output:
c1 c2
0 10 100
1 11 110
2 12 120
Ora voglio iterare sulle righe di questo frame. Per ogni riga voglio poter accedere ai suoi elementi (valori nelle celle) tramite il nome delle colonne. Per esempio:
for row in df.rows:
print row['c1'], row['c2']
È possibile farlo in pandas?
Ho trovato questo domanda simile. Ma non mi dà la risposta di cui ho bisogno. Ad esempio, è suggerito lì per usare:
for date, row in df.T.iteritems():
o
for row in df.iterrows():
Ma non capisco cosa sia l'oggetto row
e come posso lavorare con esso.
DataFrame.iterrows è un generatore che produce sia indice che riga
import pandas as pd
import numpy as np
df = pd.DataFrame([{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}])
{{{184286}};!->
for index, row in df.iterrows():
print(row['c1'], row['c2'])
Output:
10 100
11 110
12 120
Dovreste usare df.iterrows()
. Anche se iterare riga per riga non è particolarmente efficiente, dato che devono essere creati oggetti Serie.
Potete anche usare df.apply()
per iterare sulle righe e accedere a più colonne per una funzione.
def valuation_formula(x, y):
return x * y * 0.5
df['price'] = df.apply(lambda row: valuation_formula(row['x'], row['y']), axis=1)