2014-04-18 50 views
17

wowee ..... làm thế nào để sử dụng iterrows với python và gấu trúc? Nếu tôi lặp lại hàng nên tôi không thể truy cập một cột có hàng ['COL_NAME']?python và gấu trúc - cách truy cập một cột bằng cách sử dụng iterrows

Dưới đây là những cái tên col:

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 

nếu tôi in 1 hàng:

(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) 

Trả lời

31

iterrows mang đến cho bạn (index, row) tuples thay vì chỉ các hàng, vì vậy bạn sẽ có thể truy cập vào các cột về cơ bản giống như cách bạn nghĩ nếu bạn chỉ cần làm:

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

Bạn đã bao giờ gặp phải một tình huống mà 'hàng ['Ngày']' trả về một chuỗi đại diện của cột đơn đó, thay vì giá trị của chính nó? Tôi nhận được rằng bây giờ, mặc dù truy cập vào cùng một tế bào từ các dataframe, bên ngoài 'iterrows()' cư xử như mong đợi. – kuanb

1

Nếu bạn muốn lặp qua cơ sở dữ liệu của mình và áp dụng một hàm cho mỗi hàng, bạn cũng có thể muốn xem xét hàm áp dụng

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

df.apply(print_row, axis = 1)  
Các vấn đề liên quan