1

Pandas を使用して hdf5 ファイルの 2 つの列を比較して、いくつかの行を選択するにはどうすればよいですか? hdf5 ファイルが大きすぎてメモリにロードできません。たとえば、列 A と列 B が等しい行を選択したいとします。データフレームはファイル 'mydata.hdf5' に保存されます。ありがとう。

import pandas as pd
store = pd.HDFstore('mydata.hdf5')
df = store.select('mydf',where='A=B')

これはうまくいきません。store.select('mydf',where='A==12') が機能することはわかっています。しかし、列 A と B を比較したいと思います。サンプル データは次のようになります。

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

1 に答える 1

1

これを直接行うことはできませんが、次の方法で機能します

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

これはかなり効率的です。

于 2014-12-08T11:28:44.897 に答える