如何在写入 pandas HDFStore 时处理 min_itemsize 异常
How to handle min_itemsize exception in writing to pandas 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 但这不是一个可行的解决方案,因为我不知道我将遇到的最大长度以及我将遇到问题的所有列.
是否有解决方案可以自动捕获此异常并处理它发生的每个项目?
我认为你可以这样做:
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
列
长度
以下链接可能非常有用:
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
我正在使用 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 但这不是一个可行的解决方案,因为我不知道我将遇到的最大长度以及我将遇到问题的所有列.
是否有解决方案可以自动捕获此异常并处理它发生的每个项目?
我认为你可以这样做:
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
列
以下链接可能非常有用:
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