从 Excel - Python 读取时如何转换日期格式

How to convert date format when reading from Excel - Python

我正在阅读 Excel sheet。 header 是 Month-Year 格式的日期,我想保持这种格式。但是当它读取它时,它会将格式更改为“2014-01-01 00:00:00”。我写了下面的代码来修复它,但是没有用。

import pandas as pd
import numpy as np
import datetime
from datetime import date
import time
file_loc = "path.xlsx"
df = pd.read_excel(file_loc, index_col=None, na_values=['NA'], parse_cols = 37)
df.columns=pd.to_datetime(df.columns, format='%b-%y')

什么都没做。在另一次尝试中,我做了以下操作:

df.columns = datetime.datetime.strptime(df.columns, '%Y-%m-%d %H:%M:%S').strftime('%b-%y')

其中returnsmust be str, not datetime.datetime错误。我不知道如何让它逐行读取字符串!

这是一个示例数据:

NaT 11/14/2015 00:00:00 12/15/2015 00:00:00 1/15/2016 00:00:00
A   5                   1                   6
B   6                   3                   3   

我的主要问题是它无法将其识别为 header,例如,df['11/14/2015 00:00:00'] 重新调整 keyError

感谢任何帮助。

更新:这是一张照片来说明我不断得到的东西!方框6是apply的实现,方框7是我的数据的样子

import datetime
df = pd.DataFrame({'data': ["11/14/2015 00:00:00", "11/14/2015 00:10:00", "11/14/2015 00:20:00"]})
df["data"].apply(lambda x: datetime.datetime.strptime(x, '%m/%d/%Y %H:%M:%S').strftime('%b-%y'))

编辑

如果您想使用 df.columns,您可以使用 map 函数:

df.columns = list(map(lambda x: datetime.datetime.strptime(x, '%m/%d/%Y %H:%M:%S').strftime('%b-%y'), df1.columns))

如果您使用 python 3.x,则需要列表,因为默认情况下它是迭代器。

问题可能是 excel 中的数据未以您认为的字符串格式存储。也许它存储为数字,只是在 excel.

中显示为日期字符串

Excel 有时使用纪元后的毫秒数来存储日期。 检查您在 df 数组中看到的实际值。

这说明了什么?

from pprint import pprint
pprint(df)