Как экспортировать Pandas DataFrame в файл .mdb - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть Pandas DataFrame с около 200 000 индексов / строк и 30 столбцами.Мне нужно, чтобы это было экспортировано напрямую в файл .mdb, преобразовать его в csv и вручную импортировать его не получится.

Я понимаю, что есть такие инструменты, как pyodbc, которые очень помогают с доступом к импорту / чтению, но естьЭто небольшая документация о том, как экспортировать.

Я буду рад любой помощи, которую кто-либо может оказать, и буду очень признателен за любые примеры.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Сначала преобразуйте кадр данных в файл .csv, используя приведенную ниже команду

name_of_your_dataframe.to_csv("filename.csv", sep='\t', encoding='utf-8')

Затем загрузите файл .csv в .mdb, используя pyodbc

MS Access может напрямую запроситьCSV-файлы и выполните запрос Make-Table (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 
0 голосов
/ 13 декабря 2018

Я бы порекомендовал экспортировать кадр данных pandas в csv, как обычно, так:

dataframe_name.to_csv("df_filename.csv", sep=',', encoding='utf-8')

Затем вы можете преобразовать его в файл .mdb, так как этот ответ stackoverflow показывает

...