我有一个数据框,其中有一列包含有关此人在组织中拥有帐户的年数/月数的信息。
该字段是自定义文本格式,
eg: '0yrs 11mon', '15yrs 4mon' etc.
有没有一种方法可以将年份和月份提取到单独的列中,如下所示:
Member Since | Year | Mon
-------------------------
'0yrs 11mon' | 0 | 11
-------------------------------------------
'15yrs 4mon' | 15 | 4
---------------------
最佳答案
您可以使用 Series.str.extract :
df['Year'] = df['Member Since'].str.extract('(\d+)(?:yrs)')
df['Mon'] = df['Member Since'].str.extract('(?:\s)(\d+)(?:mon)')
?:
是非捕获组表示法。这意味着它匹配正则表达式但不在输出中捕获
你也可以试试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
extractall 函数实际上返回一个 DataFrame,每一行对应一个匹配项,每一列对应一个组,因此您需要对其进行拆分。
Use the extract all method only if you have numbers as shown in your question. More or less than two will return an error.
关于python - 从自定义文本字段中提取年份和月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55676838/