Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 基于一行的值删除数据帧中的特定行_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 基于一行的值删除数据帧中的特定行

Python 3.x 基于一行的值删除数据帧中的特定行,python-3.x,pandas,Python 3.x,Pandas,我有一个数据帧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 200000

我有一个数据帧
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
的每个独特组合都是一个人。 如果在这些列
ENDTIME
STRTTIME
TRVLCMIN
中的任何一个行程中都有“-9”,我想完全删除一个人

以下是我的dataframe的输出:

        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()。转换
以识别包含一些
-9
的组合
HOUSEID,PERSONID

# 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