我試圖從字串列中提取默認字串值但沒有成功。
這是具有一些字串值的列:
Unnamed: 0
57 PA.SQNTURBO.Bb20.0-Serquinutri Turbo - Bb20 L
58 PA.SQNTURBO.Fr 1l.0-Serquinutri Turbo - Frasco 1l
59 PA.SQNZ10.Bb 20.0-Serquinutri Zinco 10 - Bb 20 L
60 PA.sqnbor.Bb 20.0-Serquinutri Serquibor - Bb 20 L
61 PA.sqnbor.Bb 5.0-Serquinutri Serquibor - Bb 5l
我想達到的目標:
Unnamed: 0
57 SQNTURBO.Bb20
58 SQNTURBO.Fr 1l
59 SQNZ10.Bb 20
60 sqnbor.Bb 20
61 sqnbor.Bb 5
這是我失敗的代碼:
all_months["Unnamed: 0"] = all_months["Unnamed: 0"].str.extract(r"/.(.*)./", expand=False)
all_months
結果……
Unnamed: 0
57 NaN
58 NaN
59 NaN
60 NaN
61 NaN
你們能幫我嗎?我對正則運算式有點困難,當我不得不處理它時,它只會讓我大吃一驚。
uj5u.com熱心網友回復:
您沒有匹配項,因為您的字串中沒有斜線。
您可以使用
all_months["Unnamed: 0"].str.extract(r"\.([^.]*\.[^.]*)", expand=False)
請參閱正則運算式演示。Series.str.extract將提取第一次出現的正則運算式匹配。詳情:
\.- 一個.字符([^.]*\.[^.]*)- 第 1 組(由 回傳的值Series.str.extract):零個或多個非.字符、一個.字符,然后是零個或多個除 之外的字符.。
熊貓測驗:
import pandas as pd
all_months = pd.DataFrame({'Unnamed: 0':['PA.SQNTURBO.Bb20.0-Serquinutri Turbo - Bb20 L',
'PA.SQNTURBO.Fr 1l.0-Serquinutri Turbo - Frasco 1l',
'PA.SQNZ10.Bb 20.0-Serquinutri Zinco 10 - Bb 20 L',
'PA.sqnbor.Bb 20.0-Serquinutri Serquibor - Bb 20 L',
'PA.sqnbor.Bb 5.0-Serquinutri Serquibor - Bb 5l']})
# >>> all_months["Unnamed: 0"].str.extract(r"\.([^.]*\.[^.]*)", expand=False)
# 0 SQNTURBO.Bb20
# 1 SQNTURBO.Fr 1l
# 2 SQNZ10.Bb 20
# 3 sqnbor.Bb 20
# 4 sqnbor.Bb 5
uj5u.com熱心網友回復:
使用您顯示的示例,請嘗試使用.str.extract函式遵循 Pandas 代碼。
all_months["Unnamed: 0"].str.extract(r"^(?:[^.]*\.)([^.]*\.[^.]*)", expand=False)
上述正則運算式的在線演示
代碼說明:簡單的說明是,.str.extract在Unnamed: 0all_months DataFrame的列上使用Pandas的功能。在其主程式中使用正則運算式并僅創建 1 個捕獲組以根據所示示例僅獲取所需的輸出。
正則運算式說明:
^(?:[^.]*\.) ##From starting creating a non-capturing group where matching everything;
##from starting till 1st occurrence of dot here.
([^.]*\.[^.]*) ##Creating 1st and only capturing group of this solution, where matching;
##everything till dot including dot, followed by everything else before next occurrence of dot.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/396626.html
上一篇:Eslint結合命名約定
