如何df到一个条件字符串在python?



我是熊猫的新手,我面临着将df添加到字符串的问题。我有一个像"'bikes'>20"这样的条件字符串语句,其中自行车是数据帧中的列名。现在我想在"bikes"前加上df,我该怎么做呢?我在下面使用了这个代码,但它不工作我的代码:

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

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

Want I Want is: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

EDIT: Solution withpandas.eval:

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

工作:

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

For me not working:

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

ValueError:数据类型必须提供itemsize

最新更新