从自定义文本字段中提取年和月

siv*_*iva 4 python series dataframe pandas

我有一个带有一栏的数据框,其中包含有关此人在组织中有帐户的年/月数的信息。

该字段是自定义文本格式,

例如:“ 0yrs 11mon”,“ 15yrs 4mon”等。

有没有一种方法可以仅将年和月提取到单独的列中,如下所示:

Member Since | Year | Mon
-------------------------

'0yrs 11mon' | 0 | 11 
-------------------------------------------

'15yrs 4mon' | 15 | 4
---------------------
Run Code Online (Sandbox Code Playgroud)

Moh*_*ani 6

您可以使用Series.str.extract

df['Year'] = df['Member Since'].str.extract('(\d+)(?:yrs)')
df['Mon'] = df['Member Since'].str.extract('(?:\s)(\d+)(?:mon)')
Run Code Online (Sandbox Code Playgroud)

?:是非捕获组符号。这意味着它与正则表达式匹配,但不会在输出中捕获

您也可以尝试Series.str.extractall

df[['year','mon']]= df['Member Since'].str.extractall('(\d+)').unstack()
df
  Member Since  year    mon
0   0yrs 11mon   0      11
1   15yrs 4mon   15      4
Run Code Online (Sandbox Code Playgroud)

extractall函数实际上返回一个DataFrame,其中每个匹配项包含一行,而每个组具有一行列,因此您需要对其进行拆栈。

仅当您有问题中显示的数字时,才使用全部提取方法。大于或小于两个将返回错误。