首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Excel列读取为datetime.datetime而不是自动datetime.time

问如何将Excel列读取为datetime.datetime而不是自动datetime.time
EN

Stack Overflow用户
提问于 2019-06-28 20:26:23
回答 1查看 52关注 0票数 0

我正在尝试在一个日期范围内选择几行熊猫数据。数据从Excel中上传,数据自动保存为datetime.time,这在与datetime.datetime相比时会造成问题。

我尝试使用datetime.time将datetime.datetime转换为pd.to_datetime,但它没有工作,可能是因为它在DF中。在读取列时,我尝试将其设置为datetime.datetime。我试着在阅读时转换为datetime.datetime。这些都不管用。列名为Sub_End,它只是一个5位数的日期格式,就像42636是2016年9月23日。

以下是我所做的一些上传尝试:

代码语言:javascript
复制
Subadvisory_Advisor_Fires=pd.read_excel('SOLO_Advisor_Data.xlsx',sheetname='Advisor_Fires', dtype={'Sub_End': date})

它读取文件时没有问题,但列仍然是datetime.time。

代码语言:javascript
复制
Subadvisory_Advisor_Fires=pd.read_excel('SOLO_Advisor_Data.xlsx',sheetname='Advisor_Fires',  converters= {'Sub_End': pd.to_datetime})

我在这个问题上遇到了一个错误: TypeError:不可转换为日期时间

代码语言:javascript
复制
Subadvisory_Advisor_Fires=pd.read_excel('SOLO_Advisor_Data.xlsx',sheetname='Advisor_Fires', dtype={'Sub_End': datetime.datetime})

它读取文件时没有问题,但列仍然是datetime.time。

出现错误的代码是:

代码语言:javascript
复制
Advisor_Fires=Subadvisory_Advisor_Fires
Start_Datetime = datetime.datetime(2016, 12, 31)
End_Datetime = datetime.datetime(2018, 12, 31)
Advisor_Fires = Advisor_Fires[(Advisor_Fires['Sub_End']).between(Start_Datetime, End_Datetime)]

我得到的错误是:

代码语言:javascript
复制
TypeError: can't compare datetime.time to datetime.datetime

我只是试图将行限制在这两个日期之间的一个行中。我尝试过的任何内容都不允许将Excel文件中的日期正确地读取为日期。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-01 13:53:11

我肯定有更简单的方法,但我能做到

代码语言:javascript
复制
Subadvisory_Advisor_Fires=pd.read_excel('SOLO_Advisor_Data.xlsx',sheetname='Advisor_Fires', converters={'Sub_End':str})
Year = Subadvisory_Advisor_Fires['Sub_End'].str.slice(0, 4)
Month = Subadvisory_Advisor_Fires['Sub_End'].str.slice(5, 7)
Day = Subadvisory_Advisor_Fires['Sub_End'].str.slice(8, 10)

Year = pd.to_numeric(Year, errors='coerce')
Month = pd.to_numeric(Month, errors='coerce')
Day = pd.to_numeric(Day, errors='coerce')

Dates = pd.to_datetime((Year*10000+Month*100+Day).apply(str),format='%Y%m%d')
Subadvisory_Advisor_Fires['Sub_End_Converted'] = Dates
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56812871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档