Python 时间转换和运行时间
我有一个包含列的数据框: 出发时间的['A'](列为整数ex:700或403,即7:00和4:03) 经过时间的['B'](列为整数ex:70或656,即70分钟和656分钟) 到达时间的['C'](列为整数:1810和355,即18:10和03:55) 我需要找到一种方法来开发一个新列['D'],该列具有一个布尔值,如果到达时间在第二天,则返回True;如果到达时间在同一天,则返回False。Python 时间转换和运行时间,python,pandas,numpy,time,jupyter,Python,Pandas,Numpy,Time,Jupyter,我有一个包含列的数据框: 出发时间的['A'](列为整数ex:700或403,即7:00和4:03) 经过时间的['B'](列为整数ex:70或656,即70分钟和656分钟) 到达时间的['C'](列为整数:1810和355,即18:10和03:55) 我需要找到一种方法来开发一个新列['D'],该列具有一个布尔值,如果到达时间在第二天,则返回True;如果到达时间在同一天,则返回False。 我想访问列A的-2索引,将小时转换为分钟,然后添加剩余的分钟来规范化值,但不确定如何实现这一点,或者
我想访问列A的-2索引,将小时转换为分钟,然后添加剩余的分钟来规范化值,但不确定如何实现这一点,或者是否有更简单的方法来找到这一点。这背后的想法是从一天开始的那一刻起计算总分钟数,如果超过一天的总分钟数,那么我会有我的答案,但不确定这是否有效。与您概述的方法类似,您可以通过将列
a
中的整数转换为24小时日期时间来完成任务(从1900-01-01
)开始,将B
列中的整数分钟数作为时间增量相加,然后检查结果是否仍在当月的第1天。作为一项完整性检查,我确保最后一行返回True
您可以在不创建新列的情况下组合这些步骤,但我认为这样代码更具可读性
import numpy as np
import pandas as pd
import datetime as dt
df = pd.DataFrame({
'A':[700,403,2359],
'B':[70,656,2],
'C':[810,1059,1]
})
# convert to string, add leading zeros, then convert column A to datetime
df['arrival'] = pd.to_datetime(df['A'].astype(str).str.zfill(4), format='%H%M') + pd.to_timedelta(df['B'],'m')
# check if you are on day 1 of the month still
df['D'] = np.where(df.arrival.dt.day > 1, True, False)
输出:
A B C arrival D
0 700 70 810 1900-01-01 08:10:00 False
1 403 656 1059 1900-01-01 14:59:00 False
2 2359 2 1 1900-01-02 00:01:00 True
101
->10:10或1:10?是否到处都使用24小时格式?请向我们提供数据集样本以帮助您@anon01假设24小时无处不在,是的-没有“am”或“pm”"信息。@Cadone不确定如何添加数据集样本,但我会尝试。值得一提的是,它是一个包含35列的.txt文件。为了帮助我计算,这些列a、B和C被更改为int astype,但每列都有相同数量的行,每列大约100万行。我必须创建一个新列,在每行中迭代并返回T后悔超过第二天的时间(A表示出发时间,B表示经过的时间,C表示到达时间),但没有日期信息,只有时间。谢谢你,德里克。我知道我没有提到这个问题,但没有“日期”信息。有必要添加日期时间并完成所有这些吗?另外,您创建了一个字典,其中每个列都有值,但在实际数据集中,我有数百万行,这似乎与大括号{}之间的df['a]:df['a']不起作用。我知道没有日期信息,但datetime默认为1900-01-01,这实际上很有用,因为这样你就可以知道你什么时候到了第二天。另外,我创建的df
DataFrame纯粹是一个示例。你可以在数据框上通过该点来编辑代码。我不知道这是否是最有效的方法,因为可能会有错误技巧,使它更快,但让我知道,如果它的工作。