获取pandasdf中连续值为零的列的索引

我在 Python 中有一个如下所示的 Pandas 数据框


       user_id  2020-03  2020-04  2020-05  2020-06  2020-07  2020-08  2020-09  2020-10  2020-11  2020-12  2021-01  2021-02  2021-03    
0            5     20.0     0           0     38.0     45.0     54.0     83.0    107.0    129.0    146.0    174.0    136.0     33.0   
1            7      5.0     13.0     26.0     27.0     19.0     13.0      7.0     14.0     21.0     17.0     13.0      5.0      5.0   
2           14      0.0      7.0     25.0     22.0     60.0     13.0      1.0     25.0     49.0     16.0      6.0      0.0      0.0   
3           16      0.0      2.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0   

我想知道第一个月(列)有两个连续列的值为 0。例如:


       user_id  2020-03  2020-04  2020-05  2020-06  2020-07  2020-08  2020-09  2020-10  2020-11  2020-12  2021-01  2021-02  2021-03  first_month   
0            5     20.0     0           0     38.0     45.0     54.0     83.0    107.0    129.0    146.0    174.0    136.0     33.0   2020-04
1            7      5.0     13.0     26.0     27.0     19.0     13.0      7.0     14.0     21.0     17.0     13.0      5.0      5.0   -
2           14      0.0      7.0     25.0     22.0     60.0     13.0      1.0     25.0     49.0     16.0      6.0      0.0      0.0   2021-02
3           16      0.0      2.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0      0.0   2020-05

谁能帮我?

回答

您可以使用df.shifton执行此操作axis=1,然后any使用条件检查df.where

u  = df.drop('user_id',1)
c = (u.eq(0)&u.shift(-1,axis=1).eq(0))
df['first_month'] = c.idxmax(1).where(c.any(1)) #c.idxmax(1).where(c.any(1),'-')

print(df)

    user_id  2020-03  2020-04  2020-05  2020-06  2020-07  2020-08  2020-09  
0        5     20.0      0.0      0.0     38.0     45.0     54.0     83.0   
1        7      5.0     13.0     26.0     27.0     19.0     13.0      7.0   
2       14      0.0      7.0     25.0     22.0     60.0     13.0      1.0   
3       16      0.0      2.0      0.0      0.0      0.0      0.0      0.0   

   2020-10  2020-11  2020-12  2021-01  2021-02  2021-03 first_month  
0    107.0    129.0    146.0    174.0    136.0     33.0     2020-04  
1     14.0     21.0     17.0     13.0      5.0      5.0         NaN  
2     25.0     49.0     16.0      6.0      0.0      0.0     2021-02  
3      0.0      0.0      0.0      0.0      0.0      0.0     2020-05  


以上是获取pandasdf中连续值为零的列的索引的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>