pandas 将字符串传递给panda.loc

osh3o9ms  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(141)

有一个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])

这将返回相同的错误。
我的代码或方法中有什么错误?

6rvt4ljy

6rvt4ljy1#

您需要使用eval

mystring = "(data_frame['Quantity'] >5) & (data_frame['Discount'] >0)"

subset_frame= data_frame.loc[eval(mystring)]

相关问题