Pandas数据框查询与变量

时间:2017-09-07 20:56:07

标签: python filter pandas-query

df.query('ZIP_(3-DIGIT) < 100')

返回:

  

ValueError:“ZIP_”不是受支持的功能

df.query('@ZIP_(3-DIGIT) < 100')

返回:

  

ValueError:“__ pd_eval_local_ZIP_”不是支持的功能

ZIP_(3-DIGIT)是int64

我可以使用df[df['ZIP_(3-DIGIT)'] < 100]来达到预期的效果,但我想知道自己做错了什么。

df = pd.DataFrame({'ZIP_(3-DIGIT)': np.arange(0,10000)})

1 个答案:

答案 0 :(得分:2)

问题在于列名中的括号和连字符。

您无法通过df + 标签访问的任何列也无法由.query进行解析。我不知道大熊猫的内部情况,也无法超越这个深度的问题回答你的问题。

例如,如果你有:

df = pd.DataFrame({'ZIP_3DIGIT': np.arange(0,10000)})

你可以这样做:

print(df.ZIP_3DIGIT.head(3))
0    0
1    1
2    2
Name: ZIP_3DIGIT, dtype: int32

现在尝试使用您当前的名字,事情将无效。

因此,要使用查询,请使用rename和方法链query

df.rename(columns={'ZIP_(3-DIGIT)' : 'ZIP_3DIGIT'}).query('ZIP_3DIGIT < 100')