Jeg har en DataFrame
fra pandaer:
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
Nå vil jeg iterere over radene i denne rammen. For hver rad vil jeg kunne få tilgang til elementene (verdier i celler) ved hjelp av navnet på kolonnene. For eksempel
for row in df.rows:
print row['c1'], row['c2']
Er det mulig å gjøre det i pandaer?
Jeg fant dette lignende spørsmålet. Men det gir meg ikke svaret jeg trenger. For eksempel foreslås det der å bruke:
for date, row in df.T.iteritems():
eller
for row in df.iterrows():
Men jeg forstår ikke hva row
-objektet er og hvordan jeg kan jobbe med det.
DataFrame.iterrows er en generator som gir både indeks og rad.
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
Du bør bruke df.iterrows()
. Selv om iterering rad for rad ikke er spesielt effektivt siden serieobjekter må opprettes.
Du kan også bruke df.apply()
for å iterere over rader og få tilgang til flere kolonner for en funksjon.
def valuation_formula(x, y):
return x * y * 0.5
df['price'] = df.apply(lambda row: valuation_formula(row['x'], row['y']), axis=1)