gpt4 book ai didi

python - 如何从 Pandas 中的 m8[ns] 对象中获取小时数?

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:16 27 4
gpt4 key购买 nike

我有一个如下所示的数据框

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'])

所以,我的结果如下图所示

enter image description here

我发现存在像dt.days 这样的函数,我试过了

df['tdiff'].dt.days

但它只提供天组件,但我正在寻找类似“小时”组件的东西

但是,我希望我的输出如下所示

enter image description here

很抱歉,我不确定如何计算第 3 行中负时间的小时当量。这可能是数据问题。

最佳答案

在 pandas 中可以通过 Series.dt.total_seconds 将 timedeltas 转换为秒然后除以 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

关于python - 如何从 Pandas 中的 m8[ns] 对象中获取小时数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57655396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com