python-3.x - 根据一行的值删除熊猫中数据框的特定行
问题描述
我有一个df
大约 100 万行的数据框:
HOUSEID PERSONID ENDTIME STRTTIME TRVLCMIN
0 20000017 1 1020 955 25
1 20000017 1 1132 1130 2
2 20000017 1 1400 1330 30
3 20000017 2 1020 955 25
4 20000017 2 1025 1022 3
5 20000017 2 -9 1120 2
6 20000017 2 2035 2000 35
7 20000231 1 952 945 7
8 20000231 1 1000 -9 5
9 20000231 2 2013 2002 -9
每一行都是一个人的一次旅行。而每一个独特的组合,HOUSEID
都是PERSONID
一个人。如果在这些列的一个行程中甚至有一个“-9”,我想完全删除一个人ENDTIME
,STRTTIME
并且TRVLCMIN
。
这是我的数据框通过这种解释的输出:
HOUSEID PERSONID ENDTIME STRTTIME TRVLCMIN
0 20000017 1 1020 955 25
1 20000017 1 1132 1130 2
2 20000017 1 1400 1330 30
你能帮我解决这个问题吗?
我非常感谢您的时间。
解决方案
您可以-9
在这些列中的任何一个中进行检查,然后groupby().transform
确定包含以下内容的组合HOUSEID, PERSONID
:-9
# rows having -9 in one of the specified columns
s = df[['ENDTIME','STRTTIME','TRVLCMIN']].eq(-9).any(1)
# combination of `HOUSEID`, `PERSONID` having some `-9`
mask = s.groupby([df['HOUSEID'],df['PERSONID']]).transform('any')
# output
df[~mask]
输出:
HOUSEID PERSONID ENDTIME STRTTIME TRVLCMIN
0 20000017 1 1020 955 25
1 20000017 1 1132 1130 2
2 20000017 1 1400 1330 30
推荐阅读
- flutter - 同一列内的水平 ListView.builder 和垂直 ListView.builder
- c# - 是否可以从 Coroutine 方法返回 UnityWebRequest 的结果?
- sql - 如何将“ALTER table [...] ADD column”之类的更改记录到我的 PostgreSQL 表中?
- node.js - 角度2:成功登录后无法重定向到主页
- angular - 当我将 rxjs 从 6.3.3 更新到 6.4.0 时,出现错误:ERROR TypeError: You provide an invalid object where a stream is expected
- scala - 如何在 Spark 应用程序中进行有效的日志记录
- javascript - ThreeJS 我的 GLTF 加载速度在主机服务器上太慢了?
- linux - 如何设置 GNU 缩进输入
- slim-4 - 如何在 Slim Framework 4 中获取已注册的路由
- javascript - 如何在渲染函数上方使用更新的状态值?