Έχω ένα DataFrame
από το pandas:
import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df
Έξοδος:
c1 c2
0 10 100
1 11 110
2 12 120
Τώρα θέλω να επαναλάβω τις γραμμές αυτού του πλαισίου. Για κάθε γραμμή θέλω να μπορώ να έχω πρόσβαση στα στοιχεία της (τιμές σε κελιά) με το όνομα των στηλών. Για παράδειγμα:
for row in df.rows:
print row['c1'], row['c2']
Είναι δυνατόν να γίνει αυτό στο pandas;
Βρήκα αυτό το παρόμοιο ερώτημα. Αλλά δεν μου δίνει την απάντηση που χρειάζομαι. Για παράδειγμα, προτείνεται εκεί να χρησιμοποιήσω:
for date, row in df.T.iteritems():
ή
for row in df.iterrows():
Αλλά δεν καταλαβαίνω τι είναι το αντικείμενο row
και πώς μπορώ να δουλέψω με αυτό.
DataFrame.iterrows είναι μια γεννήτρια που παράγει τόσο δείκτη όσο και γραμμή
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
Θα πρέπει να χρησιμοποιήσετε df.iterrows()
. Αν και η επανάληψη ανά σειρά δεν είναι ιδιαίτερα αποδοτική αφού πρέπει να δημιουργηθούν αντικείμενα Series.
Μπορείτε επίσης να χρησιμοποιήσετε την df.apply()
για να κάνετε επανάληψη σε γραμμές και να αποκτήσετε πρόσβαση σε πολλαπλές στήλες για μια συνάρτηση.
def valuation_formula(x, y):
return x * y * 0.5
df['price'] = df.apply(lambda row: valuation_formula(row['x'], row['y']), axis=1)