加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 11:06:50 所属栏目:Python 来源:网络整理
导读:我有一个这样的数据帧,每行代表一个人做的一些旅行: IndividualID Ifmarried Sex Trip1 Trip2 Trip3 Trip4 Trip5 Trip6 Trip7 Trip8 Trip9200100001 1 2 23 1 2 4 4 4 1 5 5200100002 1 1 21 2 12 3 1 55 7 7200100003 2 1 12 3 1 6 3 200100004 1 2 1 2001
我有一个这样的数据帧,每行代表一个人做的一些旅行:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读