簡體   English   中英

檢查數據中是否有日期跳過

[英]Checking if there is date skip in data

我有一個數據集,它的索引由時間戳組成。 它是 pandas 系列,如下所示:

Time                           
2013-09-17 22:08:11           0
2013-09-17 22:08:18           0
2013-09-17 22:08:26           0
2013-09-17 22:08:34           0
2013-09-17 22:08:42           0
2013-09-17 22:08:50           0
2013-09-17 22:08:58           0
2013-09-17 22:09:06           0
2013-09-17 22:09:11           0
2013-09-17 22:09:13           0
2013-09-17 22:09:19           0
2013-09-17 22:09:21           0
2013-09-17 22:09:27           0
2013-09-17 22:09:35           0
2013-09-17 22:09:43           0
Name: dummy_frame, dtype: float64

關於時間戳的數據被不規則地記錄。 現在我要做的是檢查這個數據,如果里面有日期跳過或跳轉,比如從2013-09-07到2013-12-22。 我可以簡單地檢查第一個和最后一個日期並進行比較。 但是,我需要找到這種跳轉發生的位置。 有什么簡單的方法可以找出來嗎?

謝謝你。

國際大學聯盟:

x = #your series
x.index = pd.to_datetime(x.index)
jumps = x.index.dt.date - x.index.shift(1).dt.date

這將創建一個系列,其中 jump[i] 是 jump[i] 和 jump[i-1] 之間的差異,如果您想找到 jump>1 的位置,只需執行以下操作:

x[jump>1]

我相信您可以簡單地創建一個具有相同日期格式的數據范圍並比較兩個列表:

from datetime import datetime,timedelta

start_date = datetime.strptime("2013-09-07","%Y-%m-%d")
end_date = datetime.strptime("2013-12-22","%Y-%m-%d")

# This will create a list with complete dates
completeDates = [start_date + timedelta(days=x) for x in range(0,(end_dat-start_date ).days + 1)]
completeDates = [d.strftime("%Y-%m-%d") for d in completeDates] # Convert date to string

# Get your list from data frame index, and remove hours
myDates = dummy_frame.index.tolist()

# Is possible that your dates are in datetime obj or in string
# If string
myDates = [d.split()[0] for d in myDates]
# If date
myDates = [d.strftime("%Y-%m-%d") for d in myDates]

# Creates a list with missing data
missingDates = [d for d in completeDates if d not in myDates]

從這個意義上說missingDates將是一個包含所有丟失日期或從數據框中跳轉的列表。 請讓我知道這可不可以幫你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM