首页 > 解决方案 > 如何检查 Pandas 日期时间列的缺失值?

问题描述

我必须检查来自仪器的一些数据,并且必须确保没有丢失的时间间隔。所以例如我有一个这样的数据框:

在此处输入图像描述

我试图生成一个新的日期时间系列 pd.date_range('2020-02-17 10:29:25', periods=1440, freq='T') 并尝试对其进行比较。但我被卡住了。

标签: pythonpandasdatetimejupyter-notebookmissing-data

解决方案


您可以放入Datetime新列但向下移动一行,因此一行中有两个值,您可以减去它们并检查结果是否大于 1 分钟。

import pandas as pd
import datetime

data = {'Datetime': [
    '2020-02-17 10:29:25',
    '2020-02-17 10:30:25',
    '2020-02-17 10:31:25',
    '2020-02-17 10:45:25',    
    '2020-02-17 10:46:25',    
]}

df = pd.DataFrame(data)
df['Datetime'] = pd.to_datetime(df['Datetime'])

df['DT2'] = df['Datetime'].shift(1)
df['diff'] = df['Datetime'] - df['DT2']

# all values

print(df)

# compare with 1 minut

print(df[df['diff'] > datetime.timedelta(seconds=60)])

结果

# all values

             Datetime                 DT2     diff
0 2020-02-17 10:29:25                 NaT      NaT
1 2020-02-17 10:30:25 2020-02-17 10:29:25 00:01:00
2 2020-02-17 10:31:25 2020-02-17 10:30:25 00:01:00
3 2020-02-17 10:45:25 2020-02-17 10:31:25 00:14:00
4 2020-02-17 10:46:25 2020-02-17 10:45:25 00:01:00

# compare with 1 minut

             Datetime                 DT2     diff
3 2020-02-17 10:45:25 2020-02-17 10:31:25 00:14:00

编辑:请参阅@luigigi 答案以获得使用的更简单版本

df[ df['Datetime'].diff() > pd.Timedelta('60s') ]

推荐阅读