我有以下从excel文件文件夹创建的数据框字典:
import os
import glob
import pandas as pd
files = glob.glob(os.path.join("staging" + "/*.csv"))
print(files)
# Create an empty dictionary to hold the dataframes from csvs
dict_ = {}
# Write the files into the dictionary
for file in files:
dict_[file] = pd.read_csv(file, header = 0, dtype = str, encoding = 'cp1252').fillna('')
"""
Rewrite the dataframes to csv in utf8, overwriting old values
for file in dict_:
dict_[file].to_csv(file, encoding = 'utf-8')
"""
我现在如何将每个数据帧转换为sqlite数据库中的单独表?我尝试使用以下内容:
for file in files:
pd.DataFrame(dict_[file].to_sql(file, conn, flavor = None,
schema = None, if_exists = 'replace',index = True,
index_label = None, chunksize = None, dtype = None))
但是,此代码会生成错误:要解压缩的值太多 用UTF-8重写CSV并使用这些文件构建数据库会更好吗?
答案 0 :(得分:0)
您的dict_
已包含DataFrame,您需要迭代dict_值:
for df in dict_.values():
df.to_sql(...)
如果您想将密钥用作表格的名称,可以尝试以下方法:
for key, df in dict_.items(): df.to_sql(key, conn, flavor = None, schema = None, if_exists = 'replace', index = True, index_label = None, chunksize = None, dtype = None)
此外,to_sql
方法的第一个参数应该是您要插入数据的表的名称。它应该是str
。我不认为这就是你现在所拥有的。 con
参数应该是SQLAlchemy
或pyscopg2
(或其他)与您的数据库的连接。