2013-06-15 25 views
15

Sau khi thực hiện tính toán trên toàn bộ khung dữ liệu gấu, tôi cần quay lại và ghi đè các phép tính biến (thường đặt thành 0) dựa trên giá trị của một biến khác. Có cách nào ngắn gọn/thành ngữ hơn để thực hiện loại hoạt động này không?Thành ngữ Python/pandas cho if/then/else

df['var1000'][df['type']==7] = 0 
df['var1001'][df['type']==7] = 0 
df['var1002'][df['type']==7] = 0 
... 
df['var1099'][df['type']==7] = 0 

Có cách nào để thực hiện điều này không?

if (df['type']==7): 
    df['var1000'] = 0 
    df['var1001'] = 0 
    df['var1002'] = 0 
    ... 
    df['var1099'] = 0 

Trả lời

22
df.ix[df.type==7, ['var1001', 'var1002']] = 0 

Nếu bạn đang làm nó trên tất cả các cột, bạn chỉ có thể làm df.ix[df.type==7] = 0. Hoặc tất nhiên nếu bạn có một danh sách các cột có giá trị mà bạn muốn thay thế, bạn có thể vượt qua danh sách đó trong khe thứ hai:

columnsToReplace = ['var1001', 'var1002', ...] 
df.ix[df.type==8, columnsToReplace] = 0 
+6

Và có thể sử dụng: 'var10_cols = [col cho col trong df.columns nếu isinstance (col, basestring) và col.startswith ('var10')] ' –

+1

Tốt đẹp! Đến đây từ sách dạy nấu ăn! – MYGz

Các vấn đề liên quan