Nei*_*eil 3 python time pandas
我在 pandas 中有以下数据框
code start_time end_time
0 13:00:09 13:30:09
1 14:23:33 15:23:23
2 11:30:00 12:30:00
Run Code Online (Sandbox Code Playgroud)
start_time并且end_time都是类型对象。
我想在几分钟内得到这两列的差异。我正在熊猫中做以下事情
df['time_diff'] = pd.Timestamp(df['start_time']) - pd.Timestamp(df['end_time'])
Run Code Online (Sandbox Code Playgroud)
将列转换为日期时间 byto_datetime或转换为 timedeltas by to_timedelta、减去 by sub、将输出 timedeltas 转换为total_seconds并除以60:
start_time = pd.to_datetime(df['start_time'].astype(str))
end_time = pd.to_datetime(df['end_time'].astype(str))
#another solution
#start_time = pd.to_timedelta(df['start_time'].astype(str))
#end_time = pd.to_timedelta(df['end_time'].astype(str))
df['time_diff'] = start_time.sub(end_time).dt.total_seconds().div(60)
print (df)
code start_time end_time time_diff
0 0 13:00:09 13:30:09 -30.000000
1 1 14:23:33 15:23:23 -59.833333
2 2 11:30:00 12:30:00 -60.000000
Run Code Online (Sandbox Code Playgroud)
如果将结束时间与开始时间交换:
df['time_diff'] = end_time.sub(start_time).dt.total_seconds().div(60)
print (df)
code start_time end_time time_diff
0 0 13:00:09 13:30:09 30.000000
1 1 14:23:33 15:23:23 59.833333
2 2 11:30:00 12:30:00 60.000000
Run Code Online (Sandbox Code Playgroud)
样本:
import datetime
df = pd.DataFrame({'code': [0, 1, 2],
'start_time': [datetime.time(13, 0, 9), datetime.time(14, 23, 33),
datetime.time(11, 30)],
'end_time': [datetime.time(13, 30, 9), datetime.time(15, 23, 23),
datetime.time(12, 30)]})
print (df)
code start_time end_time
0 0 13:00:09 13:30:09
1 1 14:23:33 15:23:23
2 2 11:30:00 12:30:00
Run Code Online (Sandbox Code Playgroud)
来自评论的 IDE,感谢@Anton vBR:
start_time = pd.to_timedelta(df['start_time'].astype(str)).dt.total_seconds()
end_time = pd.to_timedelta(df['end_time'].astype(str)).dt.total_seconds()
df['time_diff'] = end_time.sub(start_time).div(60)
print (df)
code start_time end_time time_diff
0 0 13:00:09 13:30:09 30.000000
1 1 14:23:33 15:23:23 59.833333
2 2 11:30:00 12:30:00 60.000000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4720 次 |
| 最近记录: |