Pandas DataFrame:如何在多个条件下选择行?

Jua*_*los 6 python dictionary pandas

我试图根据需要全部满足的条件列表选择DataFrame的行。这些条件存储在字典中,格式为{column:max-value}。

这是一个例子: dict = {'name': 4.0, 'sex': 0.0, 'city': 2, 'age': 3.0}

我需要选择相应属性小于或等于字典中相应值的所有DataFrame行。

我知道要基于两个或多个条件选择行,我可以这样写:

rows = df[(df[column1] <= dict[column1]) & (df[column2] <= dict[column2])]
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何以Python方式选择与字典中存在的条件匹配的行?我尝试过这种方式

keys = dict.keys() 
rows = df[(df[kk] <= dict[kk]) for kk in keys]
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误=“ [ expected”,即使放置[符号也不会消失。

Max*_*axU 5

我们可以像这样使用DataFrame.query()方法:

In [109]: dct = {'name': 4.0, 'sex': 0.0, 'city': 2, 'age': 3.0}

In [110]: qry = ' and '.join(['{} <= {}'.format(k,v) for k,v in dct.items()])

In [111]: qry
Out[111]: 'name <= 4.0 and sex <= 0.0 and city <= 2 and age <= 3.0'

In [112]: df.query(qry)
...
Run Code Online (Sandbox Code Playgroud)