Tôi muốn lọc các hàng theo hàm của mỗi hàng, ví dụ:gấu trúc: bộ lọc phức tạp trên các hàng của DataFrame
def f(row):
return sin(row['velocity'])/np.prod(['masses']) > 5
df = pandas.DataFrame(...)
filtered = df[apply_to_all_rows(df, f)]
Hoặc thêm phức tạp hơn, ví dụ contrived,
def g(row):
if row['col1'].method1() == 1:
val = row['col1'].method2()/row['col1'].method3(row['col3'], row['col4'])
else:
val = row['col2'].method5(row['col6'])
return np.sin(val)
df = pandas.DataFrame(...)
filtered = df[apply_to_all_rows(df, g)]
Làm thế nào tôi có thể làm như vậy?
Không cần phải áp dụng 'trong trường hợp này. Một chỉ số boolean thông thường sẽ hoạt động tốt. 'df [df ['b]> df [' c ']]'. Có rất ít tình huống thực sự yêu cầu 'áp dụng' và thậm chí một vài trường hợp cần nó với' axis = 1' –