我是熊猫的新手,我面临着将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