有一个Pandas数据框架,它需要使用多个条件来创建一个子集。当条件是硬编码的时候,这是有效的:
subset_frame = data_frame.loc[(data_frame['Quantity'] >5) & (data_frame['Discount'] >0)]
条件是可变的,并且为所提供的任何条件列表创建函数。该函数生成一个字符串:
mystring = "(data_frame['Quantity'] >5) & (data_frame['Discount'] >0)"
这将被输入到.loc:
subset_frame= data_frame.loc[mystring]
返回错误:
KeyError: "(data_frame['Quantity'] >5) & (data_frame['Discount'] >0)"
与上面的第一个subset_frame示例一样,从KeyError输出复制并粘贴/硬编码到.loc中的这段文本成功运行。
还尝试了另一种方法.update:
data_frame.update(data_frame.loc[mystring])
这将返回相同的错误。
我的代码或方法中有什么错误?
1条答案
按热度按时间6rvt4ljy1#
您需要使用
eval
: