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)})
答案 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')