如何使用python pandas删除每行中的某些单元格?

我有一个这样的数据帧,每行代表一个人做的一些旅行:

IndividualID    Ifmarried Sex Trip1 Trip2 Trip3 Trip4 Trip5 Trip6 Trip7 Trip8 Trip9
200100001       1         2    23    1     2     4     4      4    1     5     5
200100002       1         1    21    2     12    3     1      55   7     7
200100003       2         1    12    3     1     6     3     
200100004       1         2    1   
200100005       1         2    6     5     1     9     3      5    6  
200100006       1         2    23    4     4     1     4      3    6     5 

我想做的是:
对于每一行,如果存在值为1的行程,则删除所有以下行程.
所以希望新数据框看起来像这样:

IndividualID    Ifmarried Sex Trip1 Trip2 Trip3 Trip4 Trip5 Trip6 Trip7 Trip8 Trip9
200100001       1         2    23    1  
200100002       1         1    21    2     12    3     1   
200100003       2         1    12    3     1          
200100004       1         2    1   
200100005       1         2    6     5     1      
200100006       1         2    23    4     4     1      

请注意,在’Ifmarried’和’Sex’栏中也可能有’1′,所以我必须确保它们不会与旅行混淆.

提前致谢!

最佳答案 使用双cumsum技巧:

v = df.filter(like='Trip')
df.iloc[:, 3:] = v[v.eq(1).cumsum(1).cumsum(1).le(1)].fillna('')
df
   IndividualID  Ifmarried  Sex  Trip1 Trip2 Trip3 Trip4 Trip5 Trip6 Trip7  \
0     200100001          1    2     23     1                                 
1     200100002          1    1     21     2    12     3     1               
2     200100003          2    1     12     3     1                           
3     200100004          1    2      1                                       
4     200100005          1    2      6     5     1                           
5     200100006          1    2     23     4     4     1                     

  Trip8 Trip9  
0              
1              
2              
3              
4              
5              
点赞