我正在尝试筛选一个数据帧,并获得符合筛选条件的行。我已经能够通过首先使用select
函数,然后调用evaluate
函数来获得值,从而从数据帧中获得第一个对象:
df.select( (df['mycol1'] == filter_val1) & (df['mycol2'] == filter_val2))
x_axis_name = df.evaluate(df['x_axis_name'], selection=True).chunk(0)[0]
x_axis_id = df.evaluate(df['x_axis_id'], selection=True)[0]
y_axis_id = df.evaluate(df['y_axis_id'], selection=True)[0]
y_axis_name = df.evaluate(df['y_axis_name'], selection=True).chunk(0)[0]
第一个问题:有没有比为每列调用evaluate
更好的方法来获取行?
第二个问题:如何获得符合筛选条件的所有行的列表?
这是否适合您的用例:
df_filtered = df[(df['mycol1'] == filter_val1) & (df['mycol2'] == filter_val2)]
或者,如果你需要逐步构建一个用于过滤数据帧的表达式,你也可以这样做:
boolean_expression = df['mycol1'] == filter_val1) & (df['mycol2'] == filter_val2)
df_filtered = df.filter(boolean_expression)