皮顿:pd.日期偏移导致重复索引

2024-04-25 11:53:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更改时间序列的时间戳dataframe。第一行的现有日期时间是01/01/2001 04:30:00。我想把它改成05/12/2011 19:30:00,剩下的(最多5年5分钟的记录)应该在后面。你知道吗

我使用了以下命令:
df['DateTime'] = df['DateTime'] - pd.DateOffset(years=-10, months=-11, days=0, hours=9, minutes=0)

它工作正常,但也引入了数千个重复的日期和时间。
我还不知道原因是什么。你知道吗

好奇如何正确的方式来改变日期时间,因为我想上面?你知道吗

This是数据。你知道吗

添加1:
我检查了原始文件的DateTime列中是否有重复项:

duplicaterows = df[df.duplicated(['DateTime'])]
print("Duplicate Rows:\n", duplicaterows)

# Result:    

Duplicate Rows:
                   DateTime   data
176252 2002-09-08 10:45:00  22.23
393863 2004-10-28 05:55:00  26.21

显示了两行,但我没有发现它们是重复的。不知道为什么?你知道吗

添加2:
对这个问题感兴趣的人。转换过程中的错误经常发生。也就是说,每次原始时间戳从2月28日23:55:00过渡到持续一个月的第二天,delta月都会发生变化。三角洲天数和时间的变化更频繁。未观察到三角洲年份的变化。你知道吗

original               new
28/02/2001 23:55:00    28/01/2012 14:55:00
01/03/2001 00:00:00    31/01/2012 15:00:00

第二行中正确的新时间戳应该是28/01/2012 15:00:00,而不是31/01/2012 15:00:00


Tags: 命令dataframedfdatetime记录时间序列days