Удалить лишнюю пунктуацию из строк в пандах - PullRequest
0 голосов
/ 19 декабря 2018

Привет У меня есть кадр данных, как показано ниже

df1: -

rade   volume    packitt 
wear   28        cult,,daok
kwat   45        vaner ,boera
itre   17        eaker, ewlvwe, The wrerin
reww   87     
hakw   57        ,rabe,,boera
kryh   45        vaner ,boera,vanya,

Теперь я хочу удалить лишние запятые

Выходной кадр данных

rade   volume    packitt 
wear   28        cult,daok
kwat   45        vaner,boera
itre   17        eaker,ewlvwe,The wrerin
reww   87 
hakw   57        rabe,boera
kryh   45        vaner,boera,vanya

1 Ответ

0 голосов
/ 19 декабря 2018

Вероятно, это было вызвано неправильной агрегацией строк по столбцам (вы хотели сделать что-то вроде df.agg(lambda x: ','.join(x.dropna()), axis=1)?).

Однако, для справки, вы можете удалить запятые, используя решение без регулярных выражений, включающее str.split и str.join:

df['packitt'] = [
    ','.join(filter(None, x.split(','))) if pd.notna(x) else x 
    for x in df['packitt']
]

df
   rade  volume                    packitt
0  wear      28                  cult,daok
1  kwat      45               vaner ,boera
2  itre      17  eaker, ewlvwe, The wrerin
3  reww      87                       None
4  hakw      57                 rabe,boera
5  kryh      45         vaner ,boera,vanya

Или, используя строковые операции столбца pandas str.replace (с регулярным выражением) + str.strip:

df['packitt'] = df.packitt.str.replace(r'(\s*,\s*)+', ',').str.strip(',')

df
   rade  volume                  packitt
0  wear      28                cult,daok
1  kwat      45              vaner,boera
2  itre      17  eaker,ewlvwe,The wrerin
3  reww      87                     None
4  hakw      57               rabe,boera
5  kryh      45        vaner,boera,vanya

Где r'(\s*,\s*)+' будет соответствовать 1 или более запятым, окруженным 0 или более пробелами.

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