Python: сохраняйте начальные нули при преобразовании из Excel в CSV с пандами - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть лист Excel, который нужно вставить в базу данных.Я написал скрипт на Python, который берет файл Excel, преобразует его в CSV и затем вставляет в базу данных.Проблема в том, что в листе Excel содержатся почтовые индексы, которые, к сожалению, удаляют ведущие нули.

Вот мой код, который читает лист Excel и помещает его в CSV-файл:

def excel_to_csv():
    xlsx = pd.read_excel(excel_path + fileName + '.xlsx')
    xlsx.to_csv(csv_file, encoding='utf-8', index=False, na_rep=None, quoting=csv.QUOTE_NONE)


excel_to_csv()

И затемЯ использую этот код, чтобы вставить его в базу данных:

with open(csv_file, 'rb') as f:
    reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
    next(reader)
    for row in reader:
        cur.execute(
            "INSERT INTO table (foo1, foo2, zipcode, foo3) VALUES (%s, %s, %s, %s); ",
            row
        )

conn.commit()

Когда я распечатываю свой CSV после его преобразования из Excel, я получаю такой результат:

foo1,foo2,zipcode,foo3
353453452,DATA,37,CITY
463464356,DATA,2364,CITY

Ячейка почтового индекса вФайл Excel преобразуется в текст, поэтому он сохраняет ведущие нули, но как мне сохранить ведущие нули при преобразовании файла Excel в CSV?

1 Ответ

0 голосов
/ 27 ноября 2018

Из документов :

dtype : введите имя или тип столбца -> тип, по умолчанию нет
тип данных для данных иликолонны.Например, {'a': np.float64, 'b': np.int32} Используйте объект, чтобы сохранить данные, сохраненные в Excel, и не интерпретировать dtype.Если указаны конвертеры, они будут применены ВМЕСТО преобразования dtype.
Новое в версии 0.20.0.

Таким образом, вы можете указать pd.read_excel не интерпретировать данные, установив dtype -kwarg к object:

xlsx = pd.read_excel(excel_path + fileName + '.xlsx', dtype='object')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...