python - 识别 Pandas DataFrame 列中缺失的日期数据
问题描述
我有一个看起来像这样的 DataFrame。
rnd_id Date A B C D
1 01/01/2020 2, 5, 8, 5
1 02/01/2020 4, 4, 3, 9
1 04/01/2020 2, 4, 8, 8
20 02/01/2020 3, 1, 2, 3
20 03/01/2020 6, 4, 4, 4
20 04/01/2020 5, 4, 3, 9
50 01/01/2020 6, 4, 2, 1
50 02/01/2020 8, 4, 3, 9
50 03/01/2020 3, 5, 5, 2
50 04/01/2020 2, 3, 3, 1
对于给定的 rnd_id,它应该在日期范围内的每个连续日期都有一行。我想要做的是确定哪些数据行丢失。所以对于 date_range('2020-01-01', period=4, freq='D'),它应该返回
rnd_id Date
1 03/01/2020
20 01/01/2020
我被卡住了,因为重复的日期数据导致重新索引不起作用。有什么想法可以帮忙吗?
解决方案
我们可以做的reindex
s=pd.date_range('2020-01-01', periods=4, freq='D')
d=df.set_index(['rnd_id','Date']).reindex(pd.MultiIndex.from_product([df.rnd_id.unique(),s]))
d[d.isnull().any(1)].index.to_frame()
0 1
1 2020-01-03 1 2020-01-03
20 2020-01-01 20 2020-01-01
推荐阅读
- kubernetes - GKE - Metrics-Server - HTTP 探测失败,状态码:500
- sql - 寻找销量最高的手机型号和制造商
- r - 在 R 中将 3 维数组合并为 2 维数组
- python - 在 Django 中使用 HTML 调用带有参数的 Python 函数
- java - 在 junit mockito 中使用 Optional.of 时出现未找到错误
- python - 他们是一种在python中显示此数据集的第一个日期和最后一个日期的方法吗
- vuejs2 - Vue js,foreach循环内的异步
- string - 如何转换任何数字,例如 822042461(字符串类型)到 822042461(双类型)?
- reactjs - 使用 React 和 Gatsby 传递道具
- laravel - 使用 nuxt js 和 laravel API 的安全问题