我正在尝试根据需要满足的条件列表选择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])]
我的问题是,如何以Pythonic方式选择与字典中存在的条件匹配的行?
我这样试过,
keys = dict.keys()
rows = df[(df[kk] <= dict[kk]) for kk in keys]
解决方法:
我们可以使用这样的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)
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。