我有日期格式(YYYY-MM-DD
)的pandas系列DatetimeIndex,并希望标记连续区域,其中每个索引相对于一天是连续的 - 所以如果Datetime系列中缺少日期,我想要检测它,即:
...
2005-01-15
2005-01-16
2005-01-17
2005-02-15
2005-02-16
...
2005-01-17和2005-02-15之间的缺失天数差距明显。
用pandas找不到简单的方法,而我期待一些我不知道的辅助功能。 更一般地说,也会赞赏numpy解决方案。
@smci,我不知道dput()
是什么,但这是生成样本数据的一种方法:
import pandas as pd
import numpy as np
data = pd.concat([
pd.Series(np.random.randn(3), pd.date_range('2005-01-15', '2005-01-17')),
pd.Series(np.random.randn(3), pd.date_range('2005-02-15', '2005-02-17'))
])
答案 0 :(得分:1)
尝试类似:
data.index - data.index.shift(1, freq=pd.DateOffset(1))
per @ chrisb对Calculating time difference between two rows
的回答答案 1 :(得分:0)
Smci的答案无法解决问题所要求的检测缺少日期的问题。
我使用DataFrame.asfreq('D')来检测缺失值。那些缺失的日期将被列出,但其对应的值将显示NAN。例如:
df1 = df.asfreq('D)
missing_dates=df1[df1.Column.isnull()]