ฉันต้องการกรองแถวตามฟังก์ชันของแต่ละแถวเช่น
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