簡體   English   中英

如何在包含文本的pandas系列的每一行中提取特定數字

[英]How to extract a specific digit in each row of a pandas series containing text

我有一個pd.Series看起來如下

 O some texts...final exam marks:50 next level:10 1 some texts....final exam marks he has got:54 next level:15 2 some texts...final marks ...some texts: 45 next best level:20 

我想從該系列中提取那些數字50,54,45。 請注意,每行的文本中有多個數字。 我已經嘗試過正則表達式,但它不是只提供那些特定的數字,而是取出每一行中的所有數字。 基本上我想在“標記”這個詞后面加上數字。 任何幫助,將不勝感激。

ps我現在更新了這個問題。 我嘗試了這里給出的解決方案。 事實上,我嘗試過

 pd.Series.str.findall('?<=specific text *(\\d{2})') 

但得到並清空列表。 這里示例的表示與實際問題非常相似,因此我編輯了帖子。

許多人提前感謝。

嘗試

s.str.extract('.*marks:\s?(\d+)', expand = False)


0    50
1    54
2    45

隨着更新:

s.str.extract('.*marks.*?(\d+)', expand = False)

這個正則表達式考慮了在標記之后可能存在或不存在字符的事實

你得到

0    50
1    54
2    45

你需要看一下語法(?<=) ,它斷言所需的模式前面有另一個模式, (?<=marks:) *([0-9]+)提取數字后面的數字后跟可選的空格:

s
#0         some texts...final exam marks:50 next lev...
#1         some texts....final exam marks:54 next le...
#2         some texts...final marks: 45 next best le...
#Name: 1, dtype: object

s.str.extract("(?<=marks:) *([0-9]+)", expand=False)

#0    50
#1    54
#2    45
#Name: 1, dtype: object

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM