Python 如何将数据帧中的24小时时间转换为总秒数
我正在尝试在df中以24小时的时间替换一个列,以达到总秒数。下面的代码生成一个随机dfPython 如何将数据帧中的24小时时间转换为总秒数,python,pandas,time,Python,Pandas,Time,我正在尝试在df中以24小时的时间替换一个列,以达到总秒数。下面的代码生成一个随机df import pandas as pd import random def randomTime(): rtime = int(random.random()*86400) hours = int(rtime/3600) minutes = int((rtime - hours*3600)/60) seconds = rtime - hours*3600 - minu
import pandas as pd
import random
def randomTime():
rtime = int(random.random()*86400)
hours = int(rtime/3600)
minutes = int((rtime - hours*3600)/60)
seconds = rtime - hours*3600 - minutes*60
time_string = '%02d:%02d:%02d' % (hours, minutes, seconds)
return time_string
time = [randomTime() for _ in range(8)]
k = 5
N = 8
d = ({'Time' : (time),
'Events' : ['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL'],
'Number1' : ['xx','xx',1,'xx','xx','xx',2,'xx'],
'Number2' : ['xx',1,'xx',1,'xx',2,'xx',2]})
df = pd.DataFrame(data=d)
输出:
Events Number1 Number2 Time
0 ABC xx xx 07:02:30
1 DEF xx 1 03:34:02
2 GHI 1 xx 01:38:11
3 JKL xx 1 14:50:43
4 ABC xx xx 06:05:53
5 DEF xx 2 18:50:44
6 GHI 2 xx 17:09:42
7 JKL xx 2 21:09:28
0 25350.0
1 12842.0
2 5891.0
3 53443.0
4 21953.0
5 67844.0
6 61782.0
7 76168.0
我可以使用以下方法将时间转换为总秒数并返回到单独的序列:
Time_secs = pd.to_timedelta(df['Time']).dt.total_seconds()
Events Number1 Number2 Time
0 ABC xx xx 25350.0
1 DEF xx 1 12842.0
2 GHI 1 xx 5891.0
3 JKL xx 1 53443.0
4 ABC xx xx 21953.0
5 DEF xx 2 67844.0
6 GHI 2 xx 61782.0
7 JKL xx 2 76168.0
输出:
Events Number1 Number2 Time
0 ABC xx xx 07:02:30
1 DEF xx 1 03:34:02
2 GHI 1 xx 01:38:11
3 JKL xx 1 14:50:43
4 ABC xx xx 06:05:53
5 DEF xx 2 18:50:44
6 GHI 2 xx 17:09:42
7 JKL xx 2 21:09:28
0 25350.0
1 12842.0
2 5891.0
3 53443.0
4 21953.0
5 67844.0
6 61782.0
7 76168.0
但是我想将数据帧中的Time列替换为total seconds。不导出一个单独的系列,我必须将它连接回df
因此,我希望得出以下结论:
Time_secs = pd.to_timedelta(df['Time']).dt.total_seconds()
Events Number1 Number2 Time
0 ABC xx xx 25350.0
1 DEF xx 1 12842.0
2 GHI 1 xx 5891.0
3 JKL xx 1 53443.0
4 ABC xx xx 21953.0
5 DEF xx 2 67844.0
6 GHI 2 xx 61782.0
7 JKL xx 2 76168.0
为什么不直接将结果分配给列呢
df['Time'] = pd.to_timedelta(df['Time']).dt.total_seconds()