如何在写入pandas HDFStore时处理min_itemsize异常

时间:2016-06-13 04:00:14

标签: python-3.x exception pandas dataframe hdfstore

我正在使用pandas HDFStore来存储我从数据创建的dfs。

store = pd.HDFStore(storeName, ...)
for file in downloaded_files:
    try:
        with gzip.open(file) as f:
            data = json.loads(f.read())
            df = json_normalize(data)   
            store.append(storekey, df, format='table', append=True)
    except TypeError:
        pass
        #File Error

我收到了错误:

ValueError: Trying to store a string with len [82] in [values_block_2] column but
this column has a limit of [72]!
Consider using min_itemsize to preset the sizes on these columns

我发现可以为所涉及的列设置min_itemsize,但这不是一个可行的解决方案,因为我不知道我将遇到的最大长度以及我将遇到问题的所有列。

是否有解决方案自动捕获此异常并处理它发生的每个项目?

1 个答案:

答案 0 :(得分:2)

我认为你可以这样做:

store.append(storekey, df, format='table', append=True, min_itemsize={'Long_string_column': 200})

基本上它与以下create table SQL语句非常相似:

create table df(
  id     int,
  str    varchar(200)
);

其中200是str最大允许的长度

以下链接可能非常有用:

https://www.google.com/search?q=pandas+ValueError%3A+Trying+to+store+a+string+with+len+in+column+but+min_itemsize&pws=0&gl=us&gws_rd=cr

HDFStore.append(string, DataFrame) fails when string column contents are longer than those already there

Pandas pytable: how to specify min_itemsize of the elements of a MultiIndex