查询字词无效[[条件:[无]]]
问题描述:
我似乎无法能够查询最简单的数据帧在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
这里指定为增强问题按名称查询添加索引:https://github.com/pydata/pandas/issues/9042 – Jeff 2014-12-08 11:22:51
谢谢为了答案,它的工作原理!让我澄清其他任何人将查询指定为列表仍然是合法的语法。同样在'MultiIndex'场景下,'index'查询使用绝对行数而不是逻辑索引。在这种情况下,按名称查询'MultiIndex'('A')将起作用。 – roldugin 2014-12-08 23:32:19