我认为构建条件需要query,但对于values 中的字符串值添加"" 是必要的if-else 条件:
df = pd.DataFrame({'gender':list('MMMFFF'),
'height':[4,5,4,5,5,4],
'age':[70,80,90,40,2,3]})
print (df)
gender height age
0 M 4 70
1 M 5 80
2 M 4 90
3 F 5 40
4 F 5 2
5 F 4 3
q = ' & '.join(['{}{}"{}"'.format(i,j,k) if isinstance(k, str)
else '{}{}{}'.format(i,j,k) for i, j, k in zip(column, equal, condition)])
print (q)
height>1.68 & age>20 & gender=="F"
感谢@Yakym Pirozhenko 提供更简单的解决方案:
q = ' & '.join(['{}{}{}'.format(i,j,repr(k)) for i, j, k in zip(column, equal, condition)])
print (q)
height>1.68 & age>20 & gender=='F'
df = df.query(q)
print (df)
gender height age
3 F 5 40