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

标签 python pandas dataframe series

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

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

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/

相关文章:

python - 网页抓取无法获取所有表格

python - 在 python django 中,如何打印出对象的自省(introspection)?该对象的所有公共(public)方法(变量和/或函数)的列表?

pandas - 有没有办法强制 spark worker 使用分布式 numpy 版本而不是安装在他们身上的版本?

python - Pandas 替换值字典中的子字符串

python - 按多列分组

python - 如何将元组内的字典列表转换为表格数据/pandas DataFrame?

python - 无法在 python 中将数据发送到特定的 websocket 客户端

r - 将数据帧的名称传递到 r 中的循环中

python - 连接已旋转的 Dataframe 中的两列

python - 在 Pandas 中根据条件添加行