大熊猫删除逗号分隔的列值中的特定int值

您好,我有一个数据框,其列值用逗号分隔,我想删除该值中的某些值

我的数据框看起来像 df

  col1             col2  
0,1,0,2,30,10,20  0,0,2,3,10,20
0,0,0,1,0,210,30  0,0,20,20,20,0,0,0

想要从列中删除0,1,2 输出

 col1             col2                new_col1  new_col2
0,1,0,2,30,10,20  0,0,2,3,10,20       30,10,20   3,10,20
0,0,0,1,0,210,30  0,0,20,20,20,0,0,0   210,30    20,20,20

我试过了

def mysub(r):

     lst = [float(a) for a in r.split(',') if a != '0' and a != '' and  a != "1" and  a != "2"]
     return lst
df['new_col1']=df[df['col1']].mysub()

我无法解决我的问题,帮助我进行排序。

评论
云想衣裳
云想衣裳

使用具有指定值的列表理解来删除列表:

def mysub(r):
    return [ ','.join(z for z in y.split(',') 
            if z not in ['0','1','2']) for y in r]
df = df.apply(mysub)
print (df)
       col1      col2
0  30,10,20   3,10,20
1    210,30  20,20,20

如果要浮动输出:

def mysub(r):
    return [[float(z) for z in y.split(',') 
            if z not in ['0','1','2']] for y in r]
df = df.apply(mysub)
print (df)
                 col1                col2
0  [30.0, 10.0, 20.0]   [3.0, 10.0, 20.0]
1       [210.0, 30.0]  [20.0, 20.0, 20.0]
点赞
评论