1

使用 pandas HDFStore 存储空 DataFrame 会消耗大量磁盘空间。这是一个例子:

import pandas as pd

for i in range(1000):
    with pd.HDFStore('/tmp/test_empty.hdf') as s:
        key = 'E{:03d}'.format(i)
        s[key] = pd.DataFrame()

for i in range(1000):
    with pd.HDFStore('/tmp/test_nan.hdf') as s:
        key = 'N{:03d}'.format(i)
        s[key] = pd.DataFrame([pd.np.nan])

文件大小:

$ ls -lh /tmp/test_empty.hdf /tmp/test_nan.hdf
.... 2.0G Nov 11 11:47 /tmp/test_empty.hdf
.... 5.5M Nov 11 11:47 /tmp/test_nan.hdf

包含单个 NaN 的 1000 个 DataFrame 消耗的空间比 1000 个空的 DataFrame 少 400 倍。是否有更有效的方法将密钥标记为 HDFStore 中的密钥?(空的 DataFrame 占用这么多空间是不直观的。)

4

1 回答 1

0

我遇到了同样的问题,最终在 DataFrame 中添加了一个空列。

df = pd.DataFrame({'': []})
df.to_hdf('file_name.hdf', 'key')

加载后,检查这个DataFrame是否为空是很简单的

df_loaded = pd.read_hdf("file_name.hdf", "key")
df_loaded.empty # True
于 2021-11-10T16:18:53.940 回答