Me gustaría filtrar filas por una función de cada fila, p. Ej.pandas: filtro complejo en filas de DataFrame
def f(row):
return sin(row['velocity'])/np.prod(['masses']) > 5
df = pandas.DataFrame(...)
filtered = df[apply_to_all_rows(df, f)]
o para otro ejemplo más complejo, artificiosa,
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)]
¿Cómo puedo hacer eso?
No es necesario 'aplicar' en esta situación. Un índice booleano regular funcionará bien. 'df [df ['b]> df [' c ']]'. Hay muy pocas situaciones que realmente requieran 'apply' e incluso algunas que lo necesiten con' axis = 1' –