1

データから作成した dfs を格納するために pandas HDFStore を使用しています。

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 を設定できることがわかりましたが、発生する最大長と問題が発生するすべての列がわからないため、これは実行可能な解決策ではありません。

この例外を自動的にキャッチして、発生した各アイテムを処理するソリューションはありますか?

4

1 に答える 1

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) は、文字列列の内容が既存のものよりも長い場合に失敗します

Pandas pytable: MultiIndex の要素の min_itemsize を指定する方法

于 2016-06-13T11:25:05.947 に答える