Man ir DataFrame
no pandas:
import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df
Izejas dati:
c1 c2
0 10 100
1 11 110
2 12 120
Tagad es gribu iterēt šī rāmja rindas. Katrai rindai es gribu piekļūt tās elementiem (vērtībām šūnās) pēc kolonnu nosaukuma. Piemēram:
for row in df.rows:
print row['c1'], row['c2']
Vai to ir iespējams izdarīt ar pandas?
Es atradu šo līdzīgu jautājumu. Bet tas nesniedz man vajadzīgo atbildi. Piemēram, tur ir ieteikts izmantot:
for date, row in df.T.iteritems():
vai
for row in df.iterrows():
Bet es nesaprotu, kas ir row
objekts un kā ar to strādāt.
DataFrame.iterrows ir ģenerators, kas dod gan indeksu, gan rindu.
import pandas as pd
import numpy as np
df = pd.DataFrame([{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}])
<!- ->
for index, row in df.iterrows():
print(row['c1'], row['c2'])
Output:
10 100
11 110
12 120
Jums jāizmanto df.iterrows()
. Lai gan iterēšana rindu pa rindai nav īpaši efektīva, jo ir jārada Series objekti.
Varat arī izmantot df.apply()
, lai iterētu pa rindām un piekļūtu vairākām kolonnām funkcijai.
def valuation_formula(x, y):
return x * y * 0.5
df['price'] = df.apply(lambda row: valuation_formula(row['x'], row['y']), axis=1)