python - 从一组连续的 n 行中选择具有最大非 na 列的行
问题描述
我有一个带有时间索引的 df,以及一些带有数值的列,但在某些情况下也包含缺失值。例如:
timeindex ColA ColB ColC
00:02:00 454 436 4334
00:04:00 653
00:06:00 3423 4354
00:08:00 3432
00:10:00 2343
00:12:00 32432 23423
我想创建数据框的一个子集,以便对于每组连续的 3 行,它选择缺失值数量最少的行。所以对于上面的 df,subsetdf 看起来像:
timeindex ColA ColB ColC
00:02:00 454 436 4334
00:12:00 32432 23423
你能告诉我如何做到这一点吗?
解决方案
用于df.filter
选择列,检查空字符串,sum
在轴 1 上,然后最后groupby.idxmax
idx = (df.assign(count=df.filter(like="Col").notnull().sum(1))
.groupby(np.arange(len(df))//3)["count"].idxmax())
print (df.loc[idx])
timeindex ColA ColB ColC
0 00:02:00 454 436 4334
5 00:12:00 32432 23423
推荐阅读
- spring - 为什么在类中没有返回 discriminatorColumn dtype
- azure - Azure eventhub 有回调方法吗?
- drake - 在 Drake 中生成和操作多个模型到 iiwa arm MeshCat 仿真中
- reactjs - React 使用 Google 登录未重定向到仪表板
- python - 无限迭代器
- postgresql - Postgres - 将国际原子时间转换为 UTC 时间(在 SQL 函数体中使用 IF 循环)
- sql - 如何按 SDO_GEOMETRY 数据类型分组
- django - 如何使用 save_to_database() 跳过一些在 django-excel 中有错误的行
- c++ - OpenCascade 未定义的函数参考
- tensorflow - 在 Keras 中,ResNet50 有一个奇怪的模式