查询字词无效[[条件:[无]]]

问题描述:

我似乎无法能够查询最简单的数据帧在HDFStore:查询字词无效[[条件:[无]]]

In [1]: 
import pandas as pd 
pd.__version__ 

Out[1]: 
'0.15.1' 

In [2]: 
df = pd.DataFrame.from_dict({'A':[1,2],'B':[100,200], 'C':[42,11]}) 
df_a = df.set_index('A') 
df_a 

Out[2]: 
    B C 
A   
1 100 42 
2 200 11 

In [3]: 
store = pd.HDFStore('foo.h5','w') 
store.put('bar', df_a, format='table') 
store.select('bar', where=["'A' == 1"]) 
--------------------------------------------------------------------------- 
ValueError: query term is not valid [[Condition : [None]]] 

查询不​​得到了同样的错误。

令我惊讶的查询MultiIndexed数据帧正常工作:

In [4]: 
df_ab = df.set_index(['A','B']) 
df_ab 

Out [4]: 
     C 
A B  
1 100 42 
2 200 11 

In [5]: 
store.put('bar', df_ab, format='table') 
store.select('bar', where=["'A' == 1"]) 

Out [5]: 
     C 
A B  
1 100 42 

你需要设置你要查询的data_columns列,看文档

此外,查询本身应该是一个字符串(不是列表):

In [1]: df = pd.DataFrame.from_dict({'A':[1,2],'B':[100,200], 'C':[42,11]}) 

In [2]: df_a = df.set_index('A') 

In [3]: df_a 
Out[3]: 
    B C 
A   
1 100 42 
2 200 11 

In [4]: store = pd.HDFStore('foo.h5','w') 

In [5]: store.put('bar', df_a, format='table', data_columns=True) 

您正在查询索引,所以这么说。不支持索引('A')的名称 ATM。

In [7]: store.select('bar','index==1') 
Out[7]: 
    B C 
A   
1 100 42 

data_columns可以在查询

In [8]: store.select('bar','B==100') 
Out[8]: 
    B C 
A   
1 100 42 
+0

这里指定为增强问题按名称查询添加索引:https://github.com/pydata/pandas/issues/9042 – Jeff 2014-12-08 11:22:51

+0

谢谢为了答案,它的工作原理!让我澄清其他任何人将查询指定为列表仍然是合法的语法。同样在'MultiIndex'场景下,'index'查询使用绝对行数而不是逻辑索引。在这种情况下,按名称查询'MultiIndex'('A')将起作用。 – roldugin 2014-12-08 23:32:19