Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 如何从pandas中的m8[ns]对象获取小时数?_Python_Python 3.x_Pandas_Dataframe_Datetime - Fatal编程技术网

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,你为什么这么认为?这是熊猫的功能