Python сохраняет xlsx как дату csv, сохраняя дату и время

Мне нужно прочитать xlsx, отформатировать дату от dd-mm-yy до yyyy-mm-dd, а затем сохранить как csv для ввода в sqllite.

У меня все работает, но когда он сохраняется в формате csv, он преобразует дату в дату, например. 2016-11-29 становится 2016-11-29 00:00:00. Как я могу отформатировать csv только до даты?

import win32com.client
from win32com.client import constants

import openpyxl
import csv
import pandas as pd
import sqlite3

f = r"Services.xlsx"

exc = win32com.client.gencache.EnsureDispatch("Excel.Application")
exc.Visible = 0
exc.Workbooks.Open(Filename=f)
exc.Rows("1:1").Select()
exc.Selection.Delete(Shift=constants.xlUp)
exc.Range("K:M").Select()
exc.Selection.NumberFormat = "yyyy-mm-dd"


exc.ActiveWorkbook.Save()
exc.Quit()

data_xls = pd.read_excel('c:\Data\Programs\Cashflow\Database\Services.xlsx', 'Sheet', index_col=None)
data_xls.to_csv('c:\Data\Programs\Cashflow\Database\Services.csv', encoding='utf-8')

person Jeremy Westfall    schedule 31.03.2017    source источник


Ответы (2)


Вы должны прочитать этот ответ. В вашем случае перед вызовом to_csv() добавьте что-то вроде этого:

data_xls['some_column'] = data_xls['some_column'].map(pd.Timestamp.date)
person Sangbok Lee    schedule 31.03.2017
comment
Сработало идеально, большое спасибо. Единственная проблема заключается в том, что у меня есть пробелы в столбце даты, поэтому я думаю, что мне нужно перебрать данные, чтобы проверить, являются ли они пустыми или нет, а затем применить форматирование. - person Jeremy Westfall; 02.04.2017

Ответ от Сангбока Ли сработал, но я столкнулся с проблемами с нулевыми записями в столбце даты. Я смог решить со следующей попыткой, кроме

try:
    data_xls["Final Report Date"] = data_xls["Final Report Date"].datetime.strptime(data_xls["Final Report Date"], '%d-%m-%Y')
except:
    pd.NaT   
person Jeremy Westfall    schedule 03.04.2017