gpt4 book ai didi

Python pandas 将重复时间戳更改为唯一时间戳

转载 作者:行者123 更新时间:2023-12-01 05:38:52 25 4
gpt4 key购买 nike

我有一个包含重复时间戳的文件,每个时间戳最多两个,实际上它们不重复,只是第二个时间戳需要添加毫秒时间戳。例如,我的文件中有这些,

....
2011/1/4 9:14:00
2011/1/4 9:15:00
2011/1/4 9:15:01
2011/1/4 9:15:01
2011/1/4 9:15:02
2011/1/4 9:15:02
2011/1/4 9:15:03
2011/1/4 9:15:03
2011/1/4 9:15:04
....

我想把它们改成

2011/1/4    9:14:00
2011/1/4 9:15:00
2011/1/4 9:15:01
2011/1/4 9:15:01.500
2011/1/4 9:15:02
2011/1/4 9:15:02.500
2011/1/4 9:15:03
2011/1/4 9:15:03.500
2011/1/4 9:15:04
....

执行此类任务最有效的方法是什么?

最佳答案

设置

In [69]: df = DataFrame(dict(time = x))

In [70]: df
Out[70]:
time
0 2013-01-01 09:01:00
1 2013-01-01 09:01:00
2 2013-01-01 09:01:01
3 2013-01-01 09:01:01
4 2013-01-01 09:01:02
5 2013-01-01 09:01:02
6 2013-01-01 09:01:03
7 2013-01-01 09:01:03
8 2013-01-01 09:01:04
9 2013-01-01 09:01:04

查找与上一行时间差为0秒的位置

In [71]: mask = (df.time-df.time.shift()) == np.timedelta64(0,'s')

In [72]: mask
Out[72]:
0 False
1 True
2 False
3 True
4 False
5 True
6 False
7 True
8 False
9 True
Name: time, dtype: bool

将这些位置设置为使用 5 毫秒的偏移量(在您的问题中,您使用了 500,但可以是任何值)。这需要 numpy >= 1.7。 (并不是说此语法将在 0.13 中更改以允许更直接的 df.loc[mask,'time'] += pd.offsets.Milli(5)

In [73]: df.loc[mask,'time'] = df.time[mask].apply(lambda x: x+pd.offsets.Milli(5))

In [74]: df
Out[74]:
time
0 2013-01-01 09:01:00
1 2013-01-01 09:01:00.005000
2 2013-01-01 09:01:01
3 2013-01-01 09:01:01.005000
4 2013-01-01 09:01:02
5 2013-01-01 09:01:02.005000
6 2013-01-01 09:01:03
7 2013-01-01 09:01:03.005000
8 2013-01-01 09:01:04
9 2013-01-01 09:01:04.005000

关于Python pandas 将重复时间戳更改为唯一时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159675/

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