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