Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将数据帧中的24小时时间转换为总秒数_Python_Pandas_Time - Fatal编程技术网

Python 如何将数据帧中的24小时时间转换为总秒数

Python 如何将数据帧中的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

我正在尝试在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 - 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()