Как я могу удалить повторяющиеся символы в каждом столбце? - PullRequest
0 голосов
/ 09 декабря 2018

Я создал новый фрейм данных, используя 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 голосов
/ 10 декабря 2018

filter + replace + sum

Можно отфильтровать соответствующие столбцы по меткам, заменить 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
0 голосов
/ 09 декабря 2018

Учитывая

>>> 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

Регулярное выражение \|+ определяет последовательность | символов.Каждая из этих последовательностей заменяется одним |.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...