Select 通过使用HDFStore比较列来选择行

Select 通过使用HDFStore比较列来选择行,select,pandas,where,hdf5,hdfstore,Select,Pandas,Where,Hdf5,Hdfstore,如何通过使用Pandas比较hdf5文件中的两列来选择一些行?hdf5文件太大,无法加载到内存中。例如,我想选择列A和列B相等的行。数据帧保存在文件“mydata.hdf5”中。谢谢 import pandas as pd store = pd.HDFstore('mydata.hdf5') df = store.select('mydf',where='A=B') 这不管用。我知道那家商店。选择('mydf',其中,='A==12')就行了。但我想比较A列和B列。示例数据如下所示: A B

如何通过使用Pandas比较hdf5文件中的两列来选择一些行?hdf5文件太大,无法加载到内存中。例如,我想选择列A和列B相等的行。数据帧保存在文件“mydata.hdf5”中。谢谢

import pandas as pd
store = pd.HDFstore('mydata.hdf5')
df = store.select('mydf',where='A=B')
这不管用。我知道那家商店。选择('mydf',其中,='A==12')就行了。但我想比较A列和B列。示例数据如下所示:

A B C 
1 1 3
1 2 4
. . .
2 2 5
1 3 3

您不能直接执行此操作,但以下操作将起作用

In [23]: df = DataFrame({'A' : [1,2,3], 'B' : [2,2,2]})

In [24]: store = pd.HDFStore('test.h5',mode='w')

In [26]: store.append('df',df,data_columns=True)

In [27]: store.select('df')
Out[27]: 
   A  B
0  1  2
1  2  2
2  3  2

In [28]: store.select_column('df','A') == store.select_column('df','B')
Out[28]: 
0    False
1     True
2    False
dtype: bool

这应该非常有效。

这是一个输入错误:
df=store.select('mydf',其中='a=B')
?不应该是:
df=store。选择('mydf',其中='A==B')
即2
=
s?@EdChum,谢谢你的快速回复。但‘A=B’和‘A==B’都可以。错误如下:c:\python33\lib\site packages\pandas\computation\pytables.py in convert_value(self,v)184 return TermValue(int(v),v,kind)185 elif kind==u('integer'):-->186 v=int(float(v))187 return TermValue(v,v,kind)188 elif kind==u('float')):ValueError:无法将字符串转换为float:'chr_b'这适用于简单情况。但是如果我们有更多的列要比较,如何解决呢?数据=存储。选择('df',存储。选择列('df','A')==存储。选择列('df','B')和存储。选择列('df','C')<存储。选择列('df','D')和存储。选择列('df','E')==2)。因为我们调用了。多次选择_列,所以这可能不够紧凑和高效,对吗?我认为列之间的比较非常常用。但是我找不到任何相关的文件。熊猫没有实现这个功能,对吧?只要把它读入内存,然后直接执行即可。这不是由PyTables实现的。所以这不是一个简单的方法。