我想用dataframe
和object
interval
列过滤category
。我想根据多个条件进行过滤。我该如何处理interval
category
数据?
query
函数返回多个间隔。
>>> my_df
vtype velocity_bin
0 car (-0.001, 5.0]
1 car (5.0, 10.0]
2 car (10.0, inf]
3 motorcycle (-0.001, 5.0]
4 motorcycle (5.0, 10.0]
>>> my_df.dtypes
vtype object
velocity_bin category
dtype: object
>>> my_df.query('vtype == "car" & velocity_bin == (5, 10)')
vtype velocity_bin
0 car (-0.001, 5.0]
1 car (5.0, 10.0]
我希望输出为
vtype velocity_bin
1 car (5.0, 10.0]
答案 0 :(得分:3)
您的“ velocity_bin”列由Interval对象组成。这会带来一定程度的挑战,因为query
并不容易支持它。
作为惯用的解决方案,我建议
df[(df['vtype'] == 'car') & (df['velocity_bin'] == pd.Interval(5, 10))]
但是,与其他任何方法一样,您可以结合使用query
解决方案。使用"python"
引擎并将“ velocity_bin”转换为字符串以进行字符串比较,我们有
df.query(
'vtype="car" and velocity_bin.astype("str") == "(5.0, 10.0]"', engine='python')