我只需要从数据帧中获取某些行。我有一个关于酒店的数据框,结构是这样的
pool gym AC Breakfast
hotel1 1 0 1 0
hotel2 0 0 0 1
hotel3 0 1 1 0
....
现在,用户可以选择他们有哪些要求,例如,一个有游泳池和空调的酒店。我想删除与用户给定的任何条件都不匹配的行。因此,在这个示例中,hotel2将从数据帧中删除。你知道吗
我尝试循环使用用户给定的条件,并创建一个条件,该条件将只保留与至少一个给定属性匹配的行。你知道吗
如果我对选项进行了硬编码,就像这样。你知道吗
hotels = hotels([hotels.pool == 1) | (hotels.AC == 1)]
但是,由于用户给定的条件一直在更改,因此我构建了一个循环来生成相应的条件。像这样:
for key, value in usercriteria.items():
criteria += '(hotels[\'' + key + '\'] == 1) | '
# remove last OR operator
criteria = criteria[:-2]
但是,我不知道如何将变量值传递给dataframe以替换所需的条件,从而只给出正确的行。我尝试了以下格式:
hotels = hotels[criteria]
对于第一个I get key error:KeyError:“(hotels['pool']==1)|(hotels['AC']==1)”
但是,如果我复制/粘贴错误消息中的键并用它重新放置条件,它似乎可以工作。你知道吗
我应该如何传递该变量以便正确放置它?单引号有问题吗?你知道吗
要将表达式计算为字符串,请使用^{} :
另外,正如@GeorgPoe所建议的,您可以使用} :
DataFrame
方法^{相关问题 更多 >
编程相关推荐