从 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)
我正在阅读 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)