Python/Pandas-在时间列(ex 7:00am)中添加一个带有浮动的小时列(ex 3.30)
我有一个数据集,其中有两列我想合并,一列有表示小时/分钟的浮动,另一列有一个开始时间,如上午7:00。我还从正则表达式中提取了数据,因此“小时”列有一个选项卡空间指示器,如\t:Python/Pandas-在时间列(ex 7:00am)中添加一个带有浮动的小时列(ex 3.30),python,pandas,numpy,time,Python,Pandas,Numpy,Time,我有一个数据集,其中有两列我想合并,一列有表示小时/分钟的浮动,另一列有一个开始时间,如上午7:00。我还从正则表达式中提取了数据,因此“小时”列有一个选项卡空间指示器,如\t: Hours - Start Time \t3.30 7:00am \t1.0 7:00am \t2.30 7:30am 我试图制作第三列,其中以小时/分钟格式添加浮动,以创建新时间: Desired Output: Hours - Start Time - New Time \t3.30
Hours - Start Time
\t3.30 7:00am
\t1.0 7:00am
\t2.30 7:30am
我试图制作第三列,其中以小时/分钟格式添加浮动,以创建新时间:
Desired Output:
Hours - Start Time - New Time
\t3.30 7:00am 10:30am
\t1.0 7:00am 8:00am
\t2.30 7:30am 10:00am
我该怎么做呢?我尝试了一些方法,例如使用DateTime和Time Delta将小时列转换为小时/分钟,但遇到问题,我发现这可能是由于表格空间(\t)造成的。在尝试移除带有re的组件时,我也被卡住了。感谢任何能提供帮助的人。试试以下方法:
import dateutil
import pandas as pd
df['Hours'] = df.Hours.replace(r'.*(\d+)\.(\d+)', r'\1:\2', regex=True)
df['New Time'] = df.apply(lambda x: dateutil.parser.parse(x['Start Time']) + datetime.timedelta(hours=int(x.Hours.split(':')[0]), minutes=int(x.Hours.split(':')[1])), axis=1)
df['New Time'] = df['New Time'].apply(lambda x: datetime.datetime.fromtimestamp(datetime.datetime.timestamp(x)).strftime('%I:%M%p'))
输出:
Hours Start Time New Time
0 3:30 7:00am 10:30AM
1 1:0 7:00am 08:00AM
2 2:30 7:30am 10:00AM
对你们来说,我用我的数据集尝试了这一点,不可否认,我还有其他行的数据,我的“开始时间”列是其中的第11行或第12行。当我尝试应用您的代码时,我遇到了一个错误:
keyrorm:(“开始时间”,“发生在索引0上”)
关于导致它的原因,列的索引有问题吗?谢谢你的帮助。@slim,吉姆,你知道它的线路故障吗?也许你可以把它们添加到问题中,我可以看一下