2014-04-18 6 views
17

wowee ..... jak używać iterrows z python i pand? Jeśli wykonuję iterację wiersza, czy nie powinienem mieć dostępu do kolumny z wierszem ["COL_NAME"]?python i pandy - jak uzyskać dostęp do kolumny za pomocą iterrows

Oto nazwiska kol:

print df 
Int64Index: 152 entries, 0 to 151 
Data columns: 
Date   152 non-null values 
Time   152 non-null values 
Time Zone  152 non-null values 
Currency  152 non-null values 
Event   152 non-null values 
Importance 152 non-null values 
Actual  127 non-null values 
Forecast  86 non-null values 
Previous  132 non-null values 
dtypes: object(9) 

for row in df.iterrows(): 
    print row['Date'] 

Traceback (most recent call last): 
    File "/home/ubuntu/workspace/calandar.py", line 34, in <module> 
    print row['Date'] 
TypeError: tuple indices must be integers, not str 

jeśli mogę wydrukować 1 wiersz:

(0, Date             Sun Apr 13 
Time              17:30 
Time Zone             GMT 
Currency             USD 
Event   USD Fed's Stein Speaks on Financial Stability ... 
Importance             Low 
Actual              NaN 
Forecast             NaN 
Previous             NaN 
Name: 0) 

Odpowiedz

31

iterrows daje Ci (index, row) krotki, a nie tylko wiersze, więc powinieneś być w stanie uzyskać dostęp do kolumny w zasadzie w ten sam sposób, w jaki myślałeś, jeśli to zrobisz:

for index, row in df.iterrows(): 
    print row['Date'] 
+1

Czy kiedykolwiek napotkał sytuację, gdzie 'row [„data”]' zwraca Series reprezentacja tej pojedynczej kolumny zamiast samej wartości? Dostaję to teraz, chociaż dostęp do tej samej komórki z ramki danych, poza 'iterrows()', zachowuje się zgodnie z oczekiwaniami. – kuanb

1

Jeśli chcesz iteracyjne całej bazy danych i zastosować funkcję do każdego wiersza, możesz również rozważyć zastosowanie funkcji

def print_row(r): 
    print r['Date'] 

df.apply(print_row, axis = 1)  
Powiązane problemy