首页 文章

如何删除每列中的重复字符?

提问于
浏览
1

我使用df_all创建了一个新的数据框

classA classB    year1 count1    docID1          year2   count2           doc2            
        0   A8   B1        1972    1       0               1973      3      U015|U348|U768     
        1   A8   B2        1972    2    U157|U596          1973      0             0            
        2   A8   B3        1972    0       0               1973      1      U124

我已将docID1和docID2合并到新列中

df_all['all_doc']=df_all['docID1'].astype(str)+'|'+df_all['docID2'].astype(str)

     classA classB    year1 count1    docID1          year2   count2           doc2            all_doc
    0   A8   B1        1972    1       0               1973      3      U015|U348|U768      ||U015|U348|U768
    1   A8   B2        1972    2    U157|U596          1973      0             0            U157|U596|0
    2   A8   B3        1972    0       0               1973      1      U124                ||U124

'all_doc' 列中,每行都有重复的'|' . 我想知道如何删除每一行中的重复'|'

我希望看到这样的结果

|U015|U348|U768
|U124

先感谢您

2 回答

  • 0

    特定

    >>> df = pd.DataFrame([['foo', '||U015|U348|U768'], ['bar', 'U157|U596|0'], ['baz', '||U124']], columns=['fiz', 'all_doc'])
    >>> df
       fiz           all_doc
    0  foo  ||U015|U348|U768
    1  bar       U157|U596|0
    2  baz            ||U124
    

    你可以发行

    >>> df['all_doc'] = df['all_doc'].str.replace('\|+', '|')
    >>> df
       fiz          all_doc
    0  foo  |U015|U348|U768
    1  bar      U157|U596|0
    2  baz            |U124
    

    正则表达式 \|+ 指定 | 个字符的序列 . 这些序列中的每一个都被单个 | 替换 .

  • 0

    过滤器替换总和

    您可以按标签筛选适当的列,将 0 替换为空字符串,然后求和:

    df = pd.DataFrame({'docID1': [0, 'U157|U596', 0],
                       'doc2': ['U015|U348|U768', 0, 'U124']})
    
    df['all_doc'] = '|' + df.filter(regex='^doc').replace(0, '').sum(1)
    
    print(df)
    
          docID1            doc2          all_doc
    0          0  U015|U348|U768  |U015|U348|U768
    1  U157|U596               0       |U157|U596
    2          0            U124            |U124
    

相关问题