如何 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
我是 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