首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查pandas数据框中两列之间的日期和时间

检查pandas数据框中两列之间的日期和时间
EN

Stack Overflow用户
提问于 2018-11-07 08:20:40
回答 1查看 62关注 0票数 0

我有两个数据帧:

第一个日期范围是:

代码语言:javascript
复制
import pandas as pd
df1 = pd.DataFrame({'serialNo':['aaaa','bbbb','cccc','ffff','aaaa','bbbb','aaaa'],
               'Name':['Sayonti','Ruchi','Tony','Gowtam','Toffee','Tom','Sayonti'],
               'testName':   [4402, 3747 ,5555,8754,1234,9876,3602],
               'moduleName':   ['singing', 'dance','booze', 'vocals','drama','paint','singing'],
               'endResult': ['WARNING', 'FAILED', 'WARNING', 'FAILED','WARNING','FAILED','WARNING'],
               'Date':['2018-10-5','2018-10-6','2018-10-7','2018-10-8','2018-10-9','2018-10-10','2018-10-8'],
               'Time_df1':['23:26:39','22:50:31','22:15:28','21:40:19','21:04:15','20:29:11','19:54:03']})

第二个数据帧是:

代码语言:javascript
复制
df2 = pd.DataFrame({'serialNo':['aaaa','bbbb','aaaa','ffff','xyzy','aaaa'],
               'Food':['Strawberry','Coke','Pepsi','Nuts','Apple','Candy'],
               'Work':   ['AP', 'TC','OD', 'PU','NO','PM'],
               'Date':['2018-10-1','2018-10-6','2018-10-2','2018-10-3','2018-10-5','2018-10-10'],
               'Time_df2':['09:00:00','10:00:00','11:00:00','12:00:00','13:00:00','14:00:00']
               })

我是根据序列号加入这两个的:

代码语言:javascript
复制
df1['Date'] = pd.to_datetime(df1['Date'])
df2['Date'] = pd.to_datetime(df2['Date'])
result = pd.merge(df1,df2,on=['serialNo'],how='inner')

现在我希望Date_y位于从Date_x开始的Date_x的3天内,这意味着Date_X+(1,2,3天)应该是Date_y。我可以如下所示,但我也想检查一下我不知道如何实现的时间范围

代码语言:javascript
复制
result = result[result.Date_x.sub(result.Date_y).dt.days.between(0,3)]

我想要检查时间,以便Time_df2是在6小时内的开始时间被Time_df1。请帮帮忙?

EN

回答 1

Stack Overflow用户

发布于 2018-11-08 05:06:36

你可以在你的数据框中有一个结合了日期和时间的列。以下是在数据帧中组合单行的示例:

代码语言:javascript
复制
# Combining Date_x and time_df1
value_1_x = datetime.datetime.combine(result['Date_x'][0].date() ,\
datetime.datetime.strptime(result['Time_df1'][0], '%H:%M:%S').time())

# Combining date_y and time_df2
value_2_y = datetime.datetime.combine(result['Date_y'][0].date() , \
datetime.datetime.strptime(result['Time_df2'][0], '%H:%M:%S').time())

然后,给定两个datetime对象,您可以简单地进行减法,以找到您要查找的差异:

代码语言:javascript
复制
difference = value_1_x - value_2_y
print(difference)

它给出了输出:

代码语言:javascript
复制
4 days, 14:26:39

我的理解是,您正在查看某些内容是否在3天6小时内(或总共78小时)。您可以轻松地将其转换为小时数,然后进行所需的比较:

代码语言:javascript
复制
hours_difference = abs(value_1_x - value_2_y).total_seconds() / 3600.0
print(hours_difference)

它给出了输出:

代码语言:javascript
复制
110.44416666666666

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53182005

复制
相关文章

相似问题

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