【问题标题】:python saving xlsx as csv date saves as date timepython将xlsx保存为csv日期保存为日期时间
【发布时间】:2017-08-25 03:56:05
【问题描述】:

我需要读取一个 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')

【问题讨论】:

    标签: python excel csv datetime xlsx


    【解决方案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   
    

    【讨论】:

      【解决方案2】:

      您应该阅读this answer。在您的情况下,在调用 to_csv() 之前,添加如下内容:

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

      【讨论】:

      • 工作完美,非常感谢。唯一的问题是我在日期列中有空白,所以我想我需要遍历数据以检查其是否为空白,然后应用格式。
      猜你喜欢
      • 1970-01-01
      • 2021-08-16
      • 2016-05-09
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      相关资源
      最近更新 更多