追加到HDFStore时如何更改字符串列的大小

时间:2018-07-14 19:17:43

标签: pandas dataframe hdf5 pytables

HDFStore.append使用固定长度存储字符串,该长度显然无法更改(source)。但是,在我的用例中,我确实必须先验处理可变长度和未知长度的字符串。一个大的min_itemsize=x可以使用x,但是在我的用例中,这会占用过多的磁盘空间(为几个选定的列指定一个大的x也不是解决方案)变量的先验未知字符串长度)。

在内存和CPU使用率方面,我们能否比以下狡猾的解决方法做得更好?

import pandas as pd
store = pd.HDFStore('store.h5', mode='w')
df1 = pd.DataFrame({'A': 'foo', 'B': 'bar'}, index=range(5))
df2 = pd.DataFrame({'A': 'fooooo', 'B': 'barrrr'}, index=range(5))
store.append('df', df1)
try:
    store.append('df', df2)
except ValueError:  # ValueError: Trying to store a string with len...
    # Workaround.
    store.put('df', store['df'].append(df2))
store.close()

0 个答案:

没有答案