我需要读取一个 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:DataProgramsCashflowDatabaseServices.xlsx', 'Sheet', index_col=None)
data_xls.to_csv('c:DataProgramsCashflowDatabaseServices.csv', encoding='utf-8')
你应该阅读这个答案。在您的情况下,在调用 to_csv()
之前,添加如下内容:
data_xls['some_column'] = data_xls['some_column'].map(pd.Timestamp.date)
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