[英]Extract words after a symbol in python
我有以下數據,我想從這些數據中提取 source= 。 有沒有辦法創建一個通用的正則表達式 function 以便我可以應用於其他列以及提取等號后的單詞?
Data Data2
source=book social-media=facebook
source=book social-media=instagram
source=journal social-media=facebook
我正在使用 python 並且我嘗試了以下操作:
df['Data'].astype(str).str.replace(r'[a-zA-Z]\=', '', regex=True)
但它沒有用
你可以試試這個:
df.replace(r'[a-zA-Z]+-?[a-zA-Z]+=', '', regex=True)
它給你以下結果:
Data Data2
0 book facebook
1 book instagram
2 journal facebook
在這種情況下不需要正則表達式:
print(df['Data'].apply(lambda x : x.split('=')[-1]))
print(df['Data2'].apply(lambda x : x.split('=')[-1]))
您必須重復字符 class 1 次或多次,並且不必轉義等號。
您可以做的是使匹配更廣泛一些,以匹配除空白字符或等號之外的所有字符。
然后將結果設置為新值。
import pandas as pd
data = [
"source=book",
"source=journal",
"social-media=facebook",
"social-media=instagram"
]
df = pd.DataFrame(data, columns=["Data"])
df['Data'] = df['Data'].astype(str).str.replace(r'[^\s=]+=', '', regex=True)
print(df)
Output
Data
0 book
1 journal
2 facebook
3 instagram
如果等號后面必須有一個值,你也可以使用 str.extract
df['Data'] = df['Data'].astype(str).str.extract(r'[^\s=]+=([^\s=]+)')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.