您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将大型CSV转换为HDF5

将大型CSV转换为HDF5

用于append=True呼叫to_hdf

import numpy as np
import pandas as pd

filename = '/tmp/test.h5'

df = pd.DataFrame(np.arange(10).reshape((5,2)), columns=['A', 'B'])
print(df)
#    A  B
# 0  0  1
# 1  2  3
# 2  4  5
# 3  6  7
# 4  8  9

# Save to HDF5
df.to_hdf(filename, 'data', mode='w', format='table')
del df    # allow df to be garbage collected

# Append more data
df2 = pd.DataFrame(np.arange(10).reshape((5,2))*10, columns=['A', 'B'])
df2.to_hdf(filename, 'data', append=True)

print(pd.read_hdf(filename, 'data'))

产量

    A   B
0   0   1
1   2   3
2   4   5
3   6   7
4   8   9
0   0  10
1  20  30
2  40  50
3  60  70
4  80  90

请注意,您需要format='table'在第一个调用中使用df.to_hdf以使表可追加。否则,'fixed'认情况下为格式,这对于读写来说是更快的,但是会创建一个不能追加的表。

因此,您可以一次处理一个CSV,用于append=True构建hdf5文件。然后覆盖DataFrame或用于del df允许对旧DataFrame进行垃圾回收。

另外,df.to_hdf您也可以将其附加到HDFStore上,而不用调用

import numpy as np
import pandas as pd

filename = '/tmp/test.h5'
store = pd.hdfstore(filename)

for i in range(2):
    df = pd.DataFrame(np.arange(10).reshape((5,2)) * 10**i, columns=['A', 'B'])
    store.append('data', df)

store.close()

store = pd.hdfstore(filename)
data = store['data']
print(data)
store.close()

产量

    A   B
0   0   1
1   2   3
2   4   5
3   6   7
4   8   9
0   0  10
1  20  30
2  40  50
3  60  70
4  80  90
其他 2022/1/1 18:38:46 有759人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶