Python 如何从pandas中的m8[ns]对象获取小时数?
我有一个如下所示的数据帧Python 如何从pandas中的m8[ns]对象获取小时数?,python,python-3.x,pandas,dataframe,datetime,Python,Python 3.x,Pandas,Dataframe,Datetime,我有一个如下所示的数据帧 df = pd.DataFrame({'time':['2166-01-09 14:00:00','2166-01-09 14:08:00','2166-01-09 16:00:00','2166-01-09 20:00:00', '2166-01-09 04:00:00','2166-01-10 05:00:00','2166-01-10 06:00:00','2166-01-10 07:00:00','2166-01-1
df = pd.DataFrame({'time':['2166-01-09 14:00:00','2166-01-09 14:08:00','2166-01-09 16:00:00','2166-01-09 20:00:00',
'2166-01-09 04:00:00','2166-01-10 05:00:00','2166-01-10 06:00:00','2166-01-10 07:00:00','2166-01-10 11:00:00',
'2166-01-10 11:30:00','2166-01-10 12:00:00','2166-01-10 13:00:00','2166-01-10 13:30:00']})
我试图找出行之间的时间差。为此,我做了如下工作
df['time2'] = df['time'].shift(-1)
df['tdiff'] = (df['time2'] - df['time'])
因此,我的结果如下所示
df = pd.DataFrame({'time':['2166-01-09 14:00:00','2166-01-09 14:08:00','2166-01-09 16:00:00','2166-01-09 20:00:00',
'2166-01-09 04:00:00','2166-01-10 05:00:00','2166-01-10 06:00:00','2166-01-10 07:00:00','2166-01-10 11:00:00',
'2166-01-10 11:30:00','2166-01-10 12:00:00','2166-01-10 13:00:00','2166-01-10 13:30:00']})
我发现存在一个类似于dt.days
的函数,于是我尝试了
df['tdiff'].dt.days
但它只提供了一天的组成部分,但我在寻找类似“小时”的组成部分
但是,我希望我的输出如下所示
df = pd.DataFrame({'time':['2166-01-09 14:00:00','2166-01-09 14:08:00','2166-01-09 16:00:00','2166-01-09 20:00:00',
'2166-01-09 04:00:00','2166-01-10 05:00:00','2166-01-10 06:00:00','2166-01-10 07:00:00','2166-01-10 11:00:00',
'2166-01-10 11:30:00','2166-01-10 12:00:00','2166-01-10 13:00:00','2166-01-10 13:30:00']})
很抱歉,我不知道如何计算第3排负时间的小时当量。可能是数据问题 在pandas中,可以将时间增量转换为秒,然后除以3600:
df['tdiff'] = (df['time2'] - df['time']).dt.total_seconds() / 3600
print (df)
time time2 tdiff
0 2166-01-09 14:00:00 2166-01-09 14:08:00 0.133333
1 2166-01-09 14:08:00 2166-01-09 16:00:00 1.866667
2 2166-01-09 16:00:00 2166-01-09 20:00:00 4.000000
3 2166-01-09 20:00:00 2166-01-09 04:00:00 -16.000000
4 2166-01-09 04:00:00 2166-01-10 05:00:00 25.000000
5 2166-01-10 05:00:00 2166-01-10 06:00:00 1.000000
6 2166-01-10 06:00:00 2166-01-10 07:00:00 1.000000
7 2166-01-10 07:00:00 2166-01-10 11:00:00 4.000000
8 2166-01-10 11:00:00 2166-01-10 11:30:00 0.500000
9 2166-01-10 11:30:00 2166-01-10 12:00:00 0.500000
10 2166-01-10 12:00:00 2166-01-10 13:00:00 1.000000
11 2166-01-10 13:00:00 2166-01-10 13:30:00 0.500000
12 2166-01-10 13:30:00 NaT NaN
我会努力的。向上投票。你能分享这个
dt
方法的链接吗?你可以为tdiff的正值添加| |,因为时差永远不会像第三行那样为负值。@shyamzzp-你介意举个例子说明在哪里添加这个|
操作符吗?我是Python新手,不知道该在哪里学习this@SSMK-或者最简单的是df['tdiff']=(df['time2']-df['time']).dt.total_seconds().abs()/3600
@shyamzzp-hmmm,你为什么这么认为?这是熊猫的功能