python - 如何从时间戳列生成 TimedeltaIndex,其中每个 TimeDelta 都是引用前一个时间戳生成的

标签 python pandas

我有一个时间戳列表:

Timestamp

2015-10-01 00:00:08                                       
2015-10-01 00:00:18                                       
2015-10-01 00:00:28                                       
2015-10-01 00:00:38                                       
2015-10-01 00:00:48                                       
2015-10-01 00:00:58                                       
2015-10-01 00:01:08                                       
2015-10-01 00:01:17 

我想从时间戳生成 TimeDelta,其中每个 TimeDelta 值都引用前一个时间戳,如下所示:

Timestamp                TimeDelta

2015-10-01 00:00:08     00:00:00.000                         
2015-10-01 00:00:18     00:00:10.000                      
2015-10-01 00:00:28     00:00:10.000                      
2015-10-01 00:00:38     00:00:10.000                      
2015-10-01 00:00:48     00:00:10.000                      
2015-10-01 00:00:58     00:00:10.000                      
2015-10-01 00:01:08     00:00:10.000                      
2015-10-01 00:01:17     00:00:09.000

但我得到的是这个:

Timestamp                TimeDelta

2015-10-01 00:00:08     00:00:00.000                         
2015-10-01 00:00:18     00:00:10.000                      
2015-10-01 00:00:28     00:00:20.000                      
2015-10-01 00:00:38     00:00:30.000                      
2015-10-01 00:00:48     00:00:40.000                      
2015-10-01 00:00:58     00:00:50.000                      
2015-10-01 00:01:08     00:01:00.000                      
2015-10-01 00:01:17     00:01:09.000

我使用以下代码:

df['TimeDelta'] = pd.TimedeltaIndex(df['Timestamp'])

谢谢!

最佳答案

使用 diff 方法计算相邻行的差异:

df['TimeDelta'] = df['Timestamp'].diff().fillna(0)
<小时/>
import pandas as pd

df = pd.DataFrame({'Timestamp': ['2015-10-01 00:00:08', '2015-10-01 00:00:18',
   '2015-10-01 00:00:28', '2015-10-01 00:00:38', '2015-10-01 00:00:48',
   '2015-10-01 00:00:58', '2015-10-01 00:01:08', '2015-10-01 00:01:17']})
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df['TimeDelta'] = df['Timestamp'].diff().fillna(0)
print(df)

产量

            Timestamp  TimeDelta
0 2015-10-01 00:00:08   00:00:00
1 2015-10-01 00:00:18   00:00:10
2 2015-10-01 00:00:28   00:00:10
3 2015-10-01 00:00:38   00:00:10
4 2015-10-01 00:00:48   00:00:10
5 2015-10-01 00:00:58   00:00:10
6 2015-10-01 00:01:08   00:00:10
7 2015-10-01 00:01:17   00:00:09

关于python - 如何从时间戳列生成 TimedeltaIndex,其中每个 TimeDelta 都是引用前一个时间戳生成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312997/

相关文章:

python - Scapy 无法启动

python - append 列表错误类型错误序列项 o : expecting string, 列表已找到

python - 如何避免创建中间数据框?

Python - Pandas 棘手的列总和

python - DataFrame.to_json() 的段错误

python - 考虑不断变化的路径

python - 与 Python 套接字服务器通信(Chrome 扩展)

python - 通过列表理解定义匿名函数

python - 合并两个数据帧而不重复pandas

python - 返回多边形 geopandas 内的点列表