python save xlsx as csv date保存为日期时间

时间:2017-03-31 02:01:58

标签: python excel csv datetime xlsx

我需要阅读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')

2 个答案:

答案 0 :(得分:1)

您应该阅读this answer。在您的情况下,在致电to_csv()之前,请添加以下内容:

data_xls['some_column'] = data_xls['some_column'].map(pd.Timestamp.date)

答案 1 :(得分:1)

Sangbok Lee的回答有效,但我遇到了日期列的空条目问题。除了

,我能够通过以下尝试解决
try:
    data_xls["Final Report Date"] = data_xls["Final Report Date"].datetime.strptime(data_xls["Final Report Date"], '%d-%m-%Y')
except:
    pd.NaT