如何将 pandas DataFrame 导出到 Microsoft Access?
Posted
技术标签:
【中文标题】如何将 pandas DataFrame 导出到 Microsoft Access?【英文标题】:How do I export a pandas DataFrame to Microsoft Access? 【发布时间】:2018-12-13 18:12:29 【问题描述】:我有一个 Pandas DataFrame,它有大约 200,000 个索引/行和 30 列。 我需要将其直接导出为 .mdb 文件,将其转换为 csv 并手动导入将不起作用。
我知道有像 pyodbc 这样的工具对导入/读取访问有很大帮助,但是关于如何导出的文档很少。
我很乐意为任何人提供任何帮助,并且非常感谢任何示例。
【问题讨论】:
github.com/mkleehammer/pyodbc/wiki 和 github.com/mkleehammer/pyodbc/wiki/Data-Types 感谢@PedroLobito,我不太精通 Python 或如何使用这些 wiki - 他们使用了很多我不熟悉的术语。您能否提供一个如何将数据框导出到 mdb 文件的示例? 【参考方案1】:首先使用以下命令将数据框转换为 .csv 文件
name_of_your_dataframe.to_csv("filename.csv", sep='\t', encoding='utf-8')
然后使用 pyodbc 将 .csv 加载到 .mdb
MS Access 可以直接查询 CSV 文件并运行 Make-Table Query(https://support.office.com/en-us/article/Create-a-make-table-query-96424f9e-82fd-411e-aca4-e21ad0a94f1b) 以生成结果表。但是,需要进行一些清洁以清除垃圾行。下面打开两个文件,一个用于读取,另一个用于写入。假设垃圾在 csv 的第一列中,if 逻辑会在第二列中写入任何包含一些数据的行(根据需要进行调整):
import os
import csv
import pyodbc
# TEXT FILE CLEAN
with open('C:\Path\To\Raw.csv', 'r') as reader, open('C:\Path\To\Clean.csv', 'w') as writer:
read_csv = csv.reader(reader); write_csv = csv.writer(writer,lineterminator='\n')
for line in read_csv:
if len(line[1]) > 0:
write_csv.writerow(line)
# DATABASE CONNECTION
access_path = "C:\Path\To\Access\\DB.mdb"
con = pyodbc.connect("DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=;" \
.format(access_path))
# RUN QUERY
strSQL = "SELECT * INTO [TableName] FROM [text;HDR=Yes;FMT=Delimited(,);" + \
"Database=C:\Path\To\Folder].Clean.csv;"
cur = con.cursor()
cur.execute(strSQL)
con.commit()
con.close() # CLOSE CONNECTION
os.remove('C\Path\To\Clean.csv') # DELETE CLEAN TEMP
【讨论】:
【参考方案2】:2020 年更新
现在 Microsoft Access 支持外部 SQLAlchemy 方言 ...
https://github.com/gordthompson/sqlalchemy-access
...这使您可以直接通过 pyodbc 和 Microsoft Access ODBC 驱动程序(在 Windows 上)使用 pandas 的 to_sql
方法。
【讨论】:
【参考方案3】:我建议像往常一样将 pandas 数据框导出到 csv:
dataframe_name.to_csv("df_filename.csv", sep=',', encoding='utf-8')
然后您可以将其转换为 .mdb 文件,如 *** answer 所示
【讨论】:
以上是关于如何将 pandas DataFrame 导出到 Microsoft Access?的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:将数据从 Elasticsearch 和 Kibana 导出到 Pandas Dataframe
Elasticsearch:将数据从 Elasticsearch 和 Kibana 导出到 Pandas Dataframe
Pandas:将多个 DataFrame 导出到多个 xlsx 文件
python 将Pandas Dataframe导出到csv(无索引)