Imam DataFrame
iz pandas:
import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df
Izhod:
c1 c2
0 10 100
1 11 110
2 12 120
Zdaj želim iterirati po vrsticah tega okvirja. Za vsako vrstico želim imeti dostop do njenih elementov (vrednosti v celicah) z imeni stolpcev. Na primer:
for row in df.rows:
print row['c1'], row['c2']
Ali je to mogoče v programu pandas?
Našel sem to podobno vprašanje. Vendar mi ne daje odgovora, ki ga potrebujem. Tam je na primer predlagano, da uporabimo:
for date, row in df.T.iteritems():
ali
for row in df.iterrows():
Vendar ne razumem, kaj je objekt row
in kako lahko delam z njim.
DataFrame.iterrows je generator, ki daje indeks in vrstico
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
Uporabite df.iterrows()
. Čeprav iteracija po vrsticah ni posebej učinkovita, saj je treba ustvariti objekte serij.
Uporabite lahko tudi df.apply()
za iteracijo po vrsticah in dostop do več stolpcev za funkcijo.
def valuation_formula(x, y):
return x * y * 0.5
df['price'] = df.apply(lambda row: valuation_formula(row['x'], row['y']), axis=1)