0
我正在使用2个变量的DataFrame查询。 第一个变量是列标签,第二个是值列表。 我想要做的是选择该列中包含该列表中的值的所有行。奇怪的是,如果我写的列标签作为字符串没有错误,而引用该列标签变量提供了以下错误:熊猫DataFrame:查询变量
Traceback (most recent call last):
File "C:\Python\Python36\lib\site-packages\pandas\indexes\base.py", line 2134, in get_loc
return self._engine.get_loc(key)
File "pandas\index.pyx", line 132, in pandas.index.IndexEngine.get_loc (pandas\index.c:4433)
File "pandas\index.pyx", line 151, in pandas.index.IndexEngine.get_loc (pandas\index.c:4238)
File "pandas\index.pyx", line 388, in pandas.index.Int64Engine._check_type (pandas\index.c:8171)
KeyError: False
这是工作代码:
rhs_values_list = df1["RHS"].tolist()
query = "shoe_size in @rhs_values_list"
result_set = df2.query(query)
而这种上升上述错误:
rhs_values_list = df1["RHS"].tolist()
col = "shoe_size"
query = "@col in @rhs_values_list"
result_set = df2.query(query)
是不是有什么毛病查询的第二个版本?
使用像这样的字符串插值的FYI通常不是一个好主意。理想情况下,您希望使用允许参数化查询的库,并将清理任何变量。 – Solaxun
在这种情况下,SQL注入不是一个问题,因为您无法将表格变异查询传递给'df.query'。 –
大家好,熊猫让你回来:) – Solaxun