![](/img/trans.png)
[英]Python Pandas Extract word from column that contains String with Regex
[英]Python using regex to extract parts of a string in pandas column
我有一個名為“ Raw”的pandas df列,其格式不一致。 它包含的字符串如下所示:
'(1T XXX, Europe)'
'(2T YYYY, Latin America)'
'(3T ZZ/ZZZZ, Europe)'
'(4T XXX XXX, Africa)'
“原始”(Raw)字符串中唯一一致的地方是,它們以數字開頭,中間包含逗號,后跟空格,並且還包含括號。
現在,我想在數據框中創建兩個額外的列(“模型”和“區域”):
我該如何使用正則表達式呢?
由於只有一個逗號,並且所有內容都在括號之間,因此,在適當切片后,請使用.str.split()
代替:
model_region = df.Raw.str[1:-1].str.split(', ', expand = True)
但是,如果您堅持:
model_region = df.Raw.str.extract('\((.*), (.*)\)', expand = True)
然后
df['Model'] = model_region[0]
df['Region'] = model_region[1]
試試這個: \\(([^,]*), ([^)]*)\\)
import re
s = '(3T ZZ/ZZZZ, Europe)'
m=re.search(r'\((.*), (.*)\)',s)
print(m.groups())
Model=re.findall(r"(?<=\().+(?=\,)",s)
Region=re.findall(r"(?<=\, ).+(?=\))",s)
第一個正則表達式檢查模型前面的括號“(”,然后關閉“,”。第二個正則表達式檢查“,”和“)”之間的任何字符串。
string_list = ['(1T XXX, Europe)',
'(2T YYYY, Latin America)',
'(3T ZZ/ZZZZ, Europe)',
'(4T XXX XXX, Africa)']
df = pd.DataFrame(string_list)
df = df[0].str.extract("\(([^,]*), ([^)]*)\)", expand=False)
如果逗號是字符串部分的可靠分隔符,則不需要regexp。 如果df是您的數據幀:
df['Model'] = [x.split(',')[0].replace('(', '') for x in df['Raw']]
df['Region'] = [x.split(',')[1].replace(')', '') for x in df['Raw']]
如果您想使用regexp,它將類似於:
s = '(1T XXX, Europe)'
m = re.match('\(([\w\s]+),([\w\s]+)\)', s)
model = m.group(1)
region = m.group(2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.