python - 如何检查 Pandas 日期时间列的缺失值?
问题描述
我必须检查来自仪器的一些数据,并且必须确保没有丢失的时间间隔。所以例如我有一个这样的数据框:
我试图生成一个新的日期时间系列
pd.date_range('2020-02-17 10:29:25', periods=1440, freq='T')
并尝试对其进行比较。但我被卡住了。
解决方案
您可以放入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') ]
推荐阅读
- laravel - Laravel 5.8 - 验证未来日期
- ruby-on-rails - Rails:如何根据 foriegn_key 自动循环创建项目
- maven - 从 maven 模块创建一个 jar 文件
- javascript - 一个只有变量名的语句在 JavaScript 中能做些什么吗?
- kotlin - Kotlin Coroutines:暂停后续访问令牌更新请求
- sql - 从表中更新顶级注册表
- swift - 如何在 SWIFT 中获得小数点后两个数字的精度但不四舍五入
- java - 没有用于创建 Stripe 订阅的附加付款来源
- php - 从另一个 PHP 文件中获取一个 PHP 文件的回显内容
- python - 绘制熊猫数据框日期