我有兩個數(shù)據(jù)框df1nameADAM, HAFIZ MABAD, FARLEY JCORDDED, NANCY CBOMBSHAD, WANG Ddf2JOSEPH W. HOLUBKA WANG E. JONATHANCUCU F. LIU,WANG C. DANA,LANDY F. JON我希望提取每個數(shù)據(jù)幀的名字。對于 df1,我需要“,”之后的“名字”部分,第二個 df,名字就是我想要的。所以返回的 df 是df1HAFIZFARLEYNANCYWANGdf2JOSEPHWANGCUCUWANGLANDY我當(dāng)前的代碼是 df['name'].str.upper().apply(lambda name:re.search(r'\w+(?!.*,)',name).group())這個正則表達(dá)式適用于兩個 df,但是,我剛剛意識到我的數(shù)據(jù)有一個輸入錯誤。在 df2 中,Liu 和 Dana 末尾有一個“,”,這導(dǎo)致正則表達(dá)式不起作用。錯誤是 group() 不是屬性。無論如何我可以修復(fù)這個代碼嗎?正則表達(dá)式應(yīng)該適用于 df
2 回答

滄海一幻覺
TA貢獻(xiàn)1824條經(jīng)驗 獲得超5個贊
您可以使用
(^(?=[^,]*,?$)[\w'-]+|(?<=, )[\w'-]+)
請參閱正則表達(dá)式演示。如果字符串中存在尾隨逗號,則此模式允許在字符串中的初始位置匹配名稱。
在 Pandas 中使用向Series.str.extract
量化方法:
df['first name'] = df['name'].str.upper().str.extract(r"(^(?=[^,]*,?$)[\w'-]+|(?<=, )[\w'-]+)", expand=False)
正則表達(dá)式詳細(xì)信息
^(?=[^,]*,?$)[\w'-]+
'
- 一個或多個單詞,如果字符串沒有逗號但可以以可選逗號 ( ) 結(jié)尾,則在字符串 ( ) 開頭添加-
字符[\w'-]+
( )^
(?=[^,]*,?$)
|
- 或者(?<=, )[\w'-]+
- 一個或多個單詞,'
以及-
字符 字符前面帶有逗號 + 空格。

牧羊人nacy
TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊
再試一次,因為我的第一個不在那里。您只需要更改一件事。當(dāng)它們的前瞻匹配任何逗號時,我們只想匹配后面跟著另一個單詞的逗號。導(dǎo)致:
(?:(?<=^(?!.*,?*\w))|(?<=,?))([A-Z]+)
- 2 回答
- 0 關(guān)注
- 188 瀏覽
添加回答
舉報
0/150
提交
取消