我想按每行的函数筛选行,例如:
def f(row):
return sin(row['velocity'])/np.prod(['masses']) > 5
df = pandas.DataFrame(...)
filtered = df[apply_to_all_rows(df, f)]
或者以另一个更复杂、牵强的例子为例,
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)]
我该如何做到这一点?
apply
,普通的布尔索引就可以正常工作。df[df['b'] > df['c']]
。实际上很少有需要使用apply
的情况,即使是在axis=1
的情况下也很少需要它。 - Ted Petrou