使用 python 将 excel 转换为羽化格式
Converting excel to feather format with python
我有一个(每天增长的)大约 100 个大 excel 文件的列表,我在 Python 中对其进行了分析。由于我必须 运行 对所有文件进行多次循环,因此我的分析速度越来越慢。因此,我想将所有 excel 文件转换为羽毛格式(比如每周一次)。有没有聪明的方法来做到这一点?到目前为止我尝试了什么:
path = r"filepath\*_name*.xlsx"
file_list = glob.glob(path)
for f in file_list:
df = pd.read_excel(f, encoding='utf-8')
df[['boola', 'boolb']] = dfa[['boola', 'boolb']].astype(int)
pathname = f[:-5] + ".ftr"
df.to_feather(pathname)
但我收到以下错误消息:
ArrowInvalid: ('Could not convert stringa with type str: tried to convert to boolean', "Conversion failed for column stringb with type object")
这是解决我的问题的方法:
path = r"pathname\*_somename*.xlsx"
file_list = glob.glob(path)
for f in file_list:
df = pd.read_excel(f, encoding='utf-8', decimal=',', thousands='.')
for col in df.columns:
w= (df[[col]].applymap(type) != df[[col]].iloc[0].apply(type)).any(axis=1)
if len(df[w]) > 0:
df[col] = df[col].astype(str)
if df[col].dtype == list:
df[col] = df[col].astype(str)
pathname = f[:-4] + "ftr"
df.to_feather(pathname)
df.head()
, decimal=',', thousands='.'
部分是必需的,因为我的输入文件采用欧洲标准格式,即使用逗号作为小数点分隔符,点作为千位分隔符
实际上,您遇到这个问题是因为名为 "stringa,stringb"
的列有一些 feather 无法确定的字符,他试图转换为返回错误的其他类型,
因此,对于我之前遇到的相同问题,我的解决方案是首先将列实际转换为字符串并替换导致错误的字符
还有:
import pandas as pd
import os
path = 'c://examplepath//'
files = [file for file in os.listdir(path)]
for file in files:
df = pd.read_excel(path+file)
df['column'] = df['column'].astype(str)
df['column'] = df['column'].replace('old charecter causing error','new charecter').astype(str)
df.to_feather(path+file.split('.')[0]+'.feather')
N.B 我不认为 pd.read_excel 需要按照 documentation.
的参数编码
我有一个(每天增长的)大约 100 个大 excel 文件的列表,我在 Python 中对其进行了分析。由于我必须 运行 对所有文件进行多次循环,因此我的分析速度越来越慢。因此,我想将所有 excel 文件转换为羽毛格式(比如每周一次)。有没有聪明的方法来做到这一点?到目前为止我尝试了什么:
path = r"filepath\*_name*.xlsx"
file_list = glob.glob(path)
for f in file_list:
df = pd.read_excel(f, encoding='utf-8')
df[['boola', 'boolb']] = dfa[['boola', 'boolb']].astype(int)
pathname = f[:-5] + ".ftr"
df.to_feather(pathname)
但我收到以下错误消息:
ArrowInvalid: ('Could not convert stringa with type str: tried to convert to boolean', "Conversion failed for column stringb with type object")
这是解决我的问题的方法:
path = r"pathname\*_somename*.xlsx"
file_list = glob.glob(path)
for f in file_list:
df = pd.read_excel(f, encoding='utf-8', decimal=',', thousands='.')
for col in df.columns:
w= (df[[col]].applymap(type) != df[[col]].iloc[0].apply(type)).any(axis=1)
if len(df[w]) > 0:
df[col] = df[col].astype(str)
if df[col].dtype == list:
df[col] = df[col].astype(str)
pathname = f[:-4] + "ftr"
df.to_feather(pathname)
df.head()
, decimal=',', thousands='.'
部分是必需的,因为我的输入文件采用欧洲标准格式,即使用逗号作为小数点分隔符,点作为千位分隔符
实际上,您遇到这个问题是因为名为 "stringa,stringb"
的列有一些 feather 无法确定的字符,他试图转换为返回错误的其他类型,
因此,对于我之前遇到的相同问题,我的解决方案是首先将列实际转换为字符串并替换导致错误的字符
还有:
import pandas as pd
import os
path = 'c://examplepath//'
files = [file for file in os.listdir(path)]
for file in files:
df = pd.read_excel(path+file)
df['column'] = df['column'].astype(str)
df['column'] = df['column'].replace('old charecter causing error','new charecter').astype(str)
df.to_feather(path+file.split('.')[0]+'.feather')
N.B 我不认为 pd.read_excel 需要按照 documentation.
的参数编码