Pandas 将小时转换为秒

Pandas 将小时转换为秒,pandas,time-series,Pandas,Time Series,我通过命令行从数据帧的时间戳中提取了小时数: import pandas as pd from datetime import * from datetime import datetime import datetime as dt import time df['timestamp'] = pd.to_datetime(df['timestamp']) df['time'] = df['timestamp'].dt.time df['time'] Output

我通过命令行从数据帧的时间戳中提取了小时数:

import pandas as pd  
from datetime import *  
from datetime import datetime  
import datetime as dt  
import time  

df['timestamp'] = pd.to_datetime(df['timestamp'])  
df['time'] = df['timestamp'].dt.time  
df['time']

Output: id      time
        3539    23:49:58  
        3540    23:52:39  
        3541    23:55:19  
        3542    23:58:00  
        Name: time, dtype: object
我需要将时间列转换为秒,即。 23:49:58=23*3600+49*60+58=85798秒

id   time
3539 85798

非常感谢

将日期时间转换为
小时
s、
分钟
s和
s:

df['time'] = df['timestamp'].dt.hour * 3600 + 
             df['timestamp'].dt.minute * 60 + 
             df['timestamp'].dt.second
或获得:

样本

df = pd.DataFrame({'timestamp':['2015-04-01 23:49:58','2016-04-01 23:49:58']})
df['timestamp'] = pd.to_datetime(df['timestamp'])  
print (df)
            timestamp
0 2015-04-01 23:49:58
1 2016-04-01 23:49:58

df['time1'] = df['timestamp'].dt.hour * 3600 + \
              df['timestamp'].dt.minute * 60 + \
              df['timestamp'].dt.second

df['time2'] = (pd.to_timedelta(df['timestamp'].dt.strftime('%H:%M:%S'))
                 .dt.total_seconds().astype(int))
print (df)
            timestamp  time1  time2
0 2015-04-01 23:49:58  85798  85798
1 2016-04-01 23:49:58  85798  85798

确保添加到目前为止您已经尝试过的内容以及出现的问题。另外,请尝试包含输出和/或错误,以便我们能够更好地帮助您。请记住,Stack Overflow不是一个代码编写服务,但是如果您努力解释您的问题,这里有很多有帮助的人愿意看一看。对不起!我通过谷歌搜索和阅读时间序列转换做了很多尝试,但时间序列转换太长,无法在这里全部报告。因此,我决定只解决这个问题,并假设我花了整个上午试图解决这个问题。下一次,对于一个更简单的问题或疑问,一定要这样做。再次抱歉!实际上,我的主要问题是处理对象和deltatime类型,当我使用total-seconds()和to_timedelta时,它们会使我失败。非常感谢,耶斯雷尔!请允许我对df['time2']线路做一个简短的澄清?我的理解是,您将时间戳转换为timedelta,而不是字符串,然后是数字?。。。对dt.strftime和.astype不够熟悉。我的问题是,to_timedelta转换成了对象,使用total_seconds()使我失败。提前谢谢,没错。现在我想了一下,第一个解决方案应该在更大的数据中更快。太好了!再次感谢!
df = pd.DataFrame({'timestamp':['2015-04-01 23:49:58','2016-04-01 23:49:58']})
df['timestamp'] = pd.to_datetime(df['timestamp'])  
print (df)
            timestamp
0 2015-04-01 23:49:58
1 2016-04-01 23:49:58

df['time1'] = df['timestamp'].dt.hour * 3600 + \
              df['timestamp'].dt.minute * 60 + \
              df['timestamp'].dt.second

df['time2'] = (pd.to_timedelta(df['timestamp'].dt.strftime('%H:%M:%S'))
                 .dt.total_seconds().astype(int))
print (df)
            timestamp  time1  time2
0 2015-04-01 23:49:58  85798  85798
1 2016-04-01 23:49:58  85798  85798