Έχω κατασκευάσει μια συνθήκη που εξάγει ακριβώς μια γραμμή από το πλαίσιο δεδομένων μου:
d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]
Τώρα θα ήθελα να πάρω μια τιμή από μια συγκεκριμένη στήλη:
val = d2['col_name']
Αλλά ως αποτέλεσμα λαμβάνω ένα πλαίσιο δεδομένων που περιέχει μία γραμμή και μία στήλη (δηλαδή ένα κελί). Δεν είναι αυτό που χρειάζομαι. Χρειάζομαι μια τιμή (έναν αριθμό float). Πώς μπορώ να το κάνω αυτό στο pandas;
Αν έχετε ένα DataFrame με μία μόνο γραμμή, τότε αποκτήστε πρόσβαση στην πρώτη (μοναδική) γραμμή ως Series χρησιμοποιώντας το iloc
και στη συνέχεια στην τιμή χρησιμοποιώντας το όνομα της στήλης:
In [3]: sub_df
Out[3]:
A B
2 -0.133653 -0.030854
In [4]: sub_df.iloc[0]
Out[4]:
A -0.133653
B -0.030854
Name: 2, dtype: float64
In [5]: sub_df.iloc[0]['A']
Out[5]: -0.13365288513107493
Πρόκειται για γρήγορη πρόσβαση για κλιμάκια
In [15]: df = pandas.DataFrame(numpy.random.randn(5,3),columns=list('ABC'))
In [16]: df
Out[16]:
A B C
0 -0.074172 -0.090626 0.038272
1 -0.128545 0.762088 -0.714816
2 0.201498 -0.734963 0.558397
3 1.563307 -1.186415 0.848246
4 0.205171 0.962514 0.037709
In [17]: df.iat[0,0]
Out[17]: -0.074171888537611502
In [18]: df.at[0,'A']
Out[18]: -0.074171888537611502
Μοιάζει με αλλαγές μετά το pandas 10.1/13.1
Έκανα αναβάθμιση από 10.1 σε 13.1, πριν το iloc δεν είναι διαθέσιμο.
Τώρα με την 13.1, το iloc[0]['label']
παίρνει έναν πίνακα με μία μόνο τιμή αντί για ένα scalar.
Όπως αυτό:
lastprice=stock.iloc[-1]['Close']
Έξοδος:
date
2014-02-26 118.2
name:Close, dtype: float64