首页 > 解决方案 > 将 pandas to_datetime 函数应用于 excel 日期格式

问题描述

我决定使用 to_datetime 函数进行练习,为此我将日期的源格式更改为整数,这是在阅读 excel 文件后,每列的样子

import numpy as np
import pandas as pd
data =pd.read_excel("pivot.xlsx")
#data["Date"] =pd.to_datetime(data["Date"],format='%d%m%y',infer_datetime_format=True)
print(data.head()) 

结果是:

   Order ID   Product    Category  Amount   Date         Country
0         1   Carrots  Vegetables    4270  42375   United States
1         2  Broccoli  Vegetables    8239  42376  United Kingdom
2         3    Banana       Fruit     617  42377   United States
3         4    Banana       Fruit    8384  42379          Canada
4         5     Beans  Vegetables    2626  42379         Germany 

在源代码中,日期列的日期格式在 2016 年 1 月 6 日之后,所以当我应用 to_datetime 函数时,我得到以下结果:

import numpy as np
import pandas as pd
data =pd.read_excel("pivot.xlsx")
data["Date"] =pd.to_datetime(data["Date"],format='%d%m%y',infer_datetime_format=True)
print(data.head())

result :
   Order ID   Product  ...                          Date         Country
0         1   Carrots  ... 1970-01-01 00:00:00.000042375   United States
1         2  Broccoli  ... 1970-01-01 00:00:00.000042376  United Kingdom
2         3    Banana  ... 1970-01-01 00:00:00.000042377   United States
3         4    Banana  ... 1970-01-01 00:00:00.000042379          Canada
4         5     Beans  ... 1970-01-01 00:00:00.000042379         Germany

我该如何解决?在excel中的开始日期是1900对吗?我该如何申请?是否可以从这些整数中返回真实日期?

标签: pythonexcelpandas

解决方案


您可以使用该openpyxl.utils.datetime.from_excel()方法。

from openpyxl.utils.datetime import from_excel


df['Date'] = df['Date'].apply(from_excel)

print(df)


   Order ID   Product    Category  Amount       Date         Country
0         1   Carrots  Vegetables    4270 2016-01-06   United States
1         2  Broccoli  Vegetables    8239 2016-01-07  United Kingdom
2         3    Banana       Fruit     617 2016-01-08   United States
3         4    Banana       Fruit    8384 2016-01-10          Canada
4         5     Beans  Vegetables    2626 2016-01-10         Germany

推荐阅读