![](/img/trans.png)
[英]how to extract numbers from a string that starts with numbers in a column using python
[英]How to remove numbers from a string column that starts with 4 zeros?
我有一列名稱和產品信息,我需要從名稱中刪除代碼,每個代碼都以四個或更多零開頭,有些名稱的權重有四個或更多零,有些與名稱相連,例如以下:
data = {
'Name' : ['ANOA 250g 00004689', 'ANOA 10000g 00000059884', '80%c asjw 150000001568 ', 'Shivangi000000478761'],
}
testdf = pd.DataFrame(data)
正確的 output 應該是:
results = {
'Name' : ['ANOA 250g', 'ANOA 10000g', '80%c asjw 150000001568 ', 'Shivangi'],
}
results = pd.DataFrame(results)
使用帶有str.replace
的正則表達式:
testdf['Name'] = testdf['Name'].str.replace(r'(?:(?<=\D)|\s*\b)0{4}\d*',
'', regex=True)
或者,類似於@HaleemurAli,使用負匹配
testdf['Name'] = testdf['Name'].str.replace(r'(?<!\d)0{4,}0{4}\d*',
'', regex=True)
Output:
Name
0 ANOA 250g
1 ANOA 10000g
2 80%c asjw 150000001568
3 Shivangi
您可以通過代碼模式的開頭拆分字符串,該代碼模式由正則表達式(?<,\d)0{4,}
。 此模式使用四個前面沒有任何數字的0
。 分割字符串后,取第一個片段, str.strip
去掉可能的尾隨空格
testdf.Name.str.split('(?<!\d)0{4,}', regex=True, expand=True)[0].str.strip()[0].str.strip()
# outputs:
0 ANOA 250g
1 ANOA 10000g
2 80%c asjw 150000001568
3 Shivangi
請注意,這適用於代碼始終位於字符串末尾的情況。
嘗試在每個空間拆分它並檢查每個項目是否包含 0000,例如:
answer=[]
for i in results["Name"]:
answer.append("".join([j for j in i.split() if "0000" not in j]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.