Как заменить сложную строку в столбце (Python) - PullRequest
0 голосов
/ 23 апреля 2020

Фон

У меня есть набор данных, df, где я хотел бы заменить строку: «Подключен к вызову (совместное использование аудио, видео или экрана)» на «Подключен», а также заменить 'Завершенный вызов' на 'Завершено'

Connect                                                               End

Connected to call (audio, video or screen sharing)                    3/3/2020 2:00:01 PM
Ended call                                                            3/3/2020 2:05:00 PM

Желаемый вывод:

Connect                                                              End

Connected                                                            3/3/2020 2:00:01 PM
Ended                                                                3/3/2020 2:05:00 PM

Что я пробовал:

df1 = df["Connect"] = df["Connect"].replace(Connected to call (audio, video, or screen sharing),      "Connected")

Кроме того, как бы заменить строки, если они расположены в нескольких столбцах? Подключиться и закончить? (Как показано выше)

Любое предложение приветствуется.

Ответы [ 2 ]

2 голосов
/ 23 апреля 2020

Вам нужно экранировать parantheses с \ при замене. Вот что создает проблему.

Сделайте что-то вроде этого:

In [133]: df.Connect.str.replace("Connected to call \(audio, video or screen sharing\)", 'Connected')                                                                                                       
Out[133]: 
0     Connected
1    Ended call
Name: Connect, dtype: object

Для всех замен, вы можете сделать это:

In [142]: replacements= {'Connect' : {"Connected to call \(audio, video or screen sharing\)" : 'Connected', 'Ended call': 'Ended'}}                                                                         

In [143]: df.replace(replacements, regex=True, inplace=True)                                                                                                                                                

In [144]: df                                                                                                                                                                                                
Out[144]: 
     Connect
0  Connected
1      Ended
1 голос
/ 23 апреля 2020

numpy .select

# sample date
s = """Connect|End
Connected to call (audio, video or screen sharing)|3/3/2020 2:00:01 PM
Ended call|3/3/2020 2:05:00 PM"""
df = pd.read_csv(StringIO(s), sep='|')

# numpy.select with your conditions, choices and default value if condition is not met
df['Connect'] = np.select([df['Connect'].str.contains('Connected'), df['Connect'].str.contains('Ended')],
                          ['Connected', 'Ended'], df['Connect'])


     Connect                  End
0  Connected  3/3/2020 2:00:01 PM
1      Ended  3/3/2020 2:05:00 PM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...