2017-02-14 3 views
0

Один из столбцов в моем dataframe содержит разделенный запятыми текст а, как «Один, два, три»:Как заменить текст, разделенный запятыми, в столбце?

df = 
    Col1    Col2 
    One, two, three Abc 
    Two    Def 

Я хочу, чтобы заменить One, two, three на One_two_three.

Если я применяю этот код:

df['Col1'].replace("One, two, three", "One_two_three",inplace=True) 

... это ничего не меняет. Зачем?

+0

, который должен был работать, что означает 'print (df ['Col1']. Iloc [0])' output? у вас могут быть пробелы или другие символы, иначе вы можете сделать 'df ['Col1']. str.replace (',', '_')' – EdChum

+0

@EdChum: Он выводит «Один, два, три». – Dinosaurius

+0

@EdChum: Я проверил ваше предлагаемое решение. Он выводит один и тот же результат «Один, два, три». Ну, точнее, у меня действительно есть «Один, два и три», но я не думаю, что это что-то меняет. – Dinosaurius

ответ

0

Обобщенный решение, которое обрабатывает пробелы и даже внешние запятые при необходимости:

df['Col1'] = df['Col1'].apply(lambda x: '_'.join(x.replace(' ','').split(',')).strip('_')) 

Пример:

df = pd.DataFrame({'Col1':['x, w , wwwa,ds','x,a,a','y,c','y',',z,']}) 

      Col1 
0 x, w , wwwa,ds 
1   x,a,a 
2    y,c 
3    y 
4    ,z, 

Результат:

  Col1 
0 x_w_wwwa_ds 
1  x_a_a 
2   y_c 
3   y 
4   z 

Если у вас нет внешних запятые, просто оставьте вне последний .strip('_') часть.

1

применять не обязательно нужен

df["Col1"] = df["Col1"].str.replace(' ','').str.replace(',','_').str.strip('_') 

      Col1 
0 x_w_wwwa_ds 
1  x_a_a 
2   y_c 
3   y 
4   z 

также работает. Я не уверен, какой подход рекомендуется использовать по умолчанию

Смежные вопросы