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()