簡體   English   中英

刪除並替換字符串中的多個逗號

[英]Remove and replace multiple commas in string

我有這個數據集

df = pd.DataFrame({'name':{0: 'John,Smith', 1: 'Peter,Blue', 2:'Larry,One,Stacy,Orange' , 3:'Joe,Good' , 4:'Pete,High,Anne,Green'}})

產生:

name
0   John,Smith
1   Peter,Blue
2   Larry,One,Stacy,Orange
3   Joe,Good
4   Pete,High,Anne,Green

我想:

  • 刪除逗號(用一個空格代替)
  • 當我在一個單元格中有 2 個人時,在第一人稱姓氏之后和第二人稱姓名之前插入“&”符號。

所需的 output:

name
0   John Smith
1   Peter Blue
2   Larry One & Stacy Orange
3   Joe Good
4   Pete High & Anne Green

在下面嘗試了這段代碼,但它只是刪除了逗號。 我找不到如何在同一代碼中插入“&”符號。

df['name']= df['name'].str.replace(r',', '', regex=True) 

免責聲明:本表中所有姓名均為虛構。 無意或不應推斷出與真實人物(生者或死者)的身份。

我會按照以下方式進行

import pandas as pd
df = pd.DataFrame({'name':{0: 'John,Smith', 1: 'Peter,Blue', 2:'Larry,One,Stacy,Orange' , 3:'Joe,Good' , 4:'Pete,High,Anne,Green'}})
df['name'] = df['name'].str.replace(',',' ').str.replace(r'(\w+ \w+) ', r'\1 & ', regex=True)
print(df)

給出 output

                       name
0                John Smith
1                Peter Blue
2  Larry One & Stacy Orange
3                  Joe Good
4    Pete High & Anne Green

說明:使用空格替換, s,然后再次使用替換來更改一個或多個單詞字符后跟空格后跟一個或多個單詞字符后跟空格使用捕獲組的內容(包括除最后一個空格之外的所有內容)空格后跟&字符后跟空格。

使用單個正則表達式替換:

df['name'].str.replace(r',([^,]+)(,)?', lambda m:f" {m.group(1)}{' & ' if m.group(2) else ''}")

0                  John Smith
1                  Peter Blue
2    Larry One & Stacy Orange
3                    Joe Good
4      Pete High & Anne Green

這應該工作:

import re

def separate_names(original_str):
    spaces = re.sub(r',([^,]*(?:,|$))', r' \1', original_str)
    return spaces.replace(',', ' & ')

df['spaced'] = df.name.map(separate_names)
df

我創建了一個名為 separate_names 的 function,它使用正則表達式將奇數個逗號替換為空格。 然后使用替換 function 將剩余的逗號(偶數)替換為 &。最后我使用 map function 將 separate_names 應用於每一行。 output如下:

在此處輸入圖像描述

replace語句中,您應該用空格替換逗號。 請在 '' -> 之間放置空格,這樣你就有 ' '

df['name']= df['name'].str.replace(r',', ' ', regex=True)
                           inserted space ^ here 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM