如何 df 到 python 中的条件字符串?

How to df to a conditional string in python?

我是 pandas 的新手,我在将 df 添加到字符串时遇到问题。所以我有一个像这样的条件字符串语句 "'bikes'>20",其中 bikes 是数据框中的列名。现在我想在'bikes'之前加上df,怎么办?我在下面使用了这段代码,但它不起作用 我的代码:

x="'bikes'> 20"
x = re.sub(r"([> =!<]==)", r'df[]', x)

这给出:'bikes'> 20 但不添加 df

我要的是:df['bikes']>20

有什么办法吗?

如果您根据需要替换它,它不起作用,因为 "df['bikes']>20" 仍然是字符串,而不是像 df['bikes']>20.

这样的标量比较的列

这里可以使用 DataFrame.query:

df = pd.DataFrame({'bikes':[20,39,44]})

x="'bikes'> 20"

df = df.query(x.replace("'",''))
print (df)
   bikes
1     39
2     44

工作方式:

df = df.query("bikes > 20")
print (df)
   bikes
1     39
2     44

编辑:pandas.eval 的解决方案:

x="'bikes'> 20"

print (pd.eval("df." + x.replace("'",'')))
0    False
1     True
2     True
dtype: bool

工作方式:

print (pd.eval("df.bikes> 20"))

对我来说不工作:

print (pd.eval('df["bikes"]>20'))
    

ValueError: data type must provide an itemsize