如何在 pandas DataFrame 中的字符串模式后提取数字并在 python 中创建新功能
Posted
技术标签:
【中文标题】如何在 pandas DataFrame 中的字符串模式后提取数字并在 python 中创建新功能【英文标题】:How to extract numbers after string pattern in pandas DataFrame & create to new feature in python 【发布时间】:2021-08-15 15:30:47 【问题描述】:根据列值创建新特征
例子
Column
CHPS CHTN 28 GR 1 ITEM
CHPS CHTN 28 GR 1 ITEM
样本输出
Column A B
CHPS CHTN 28 GR 1 ITEM 28 1
CHPS CHTN 28 GR 4 ITEM 28 4
【问题讨论】:
【参考方案1】:如果你最多提取2个数字,你可以使用简单的单行代码,如下:
df.join(df['Column'].str.extract(r'\D*(?P<A>\d+)\D+(?P<B>\d+)'))
这里,列标签自动从str.extract()
调用中使用的正则表达式的命名捕获组的名称传播。
结果:
Column A B
0 CHPS CHTN 28 GR 1 ITEM 28 1
1 CHPS CHTN 28 GR 1 ITEM 28 1
【讨论】:
【参考方案2】:您可以使用str.extractall
和rename
更改列名。
from string import ascii_uppercase
import pandas as pd
alpha_cols = dict(
enumerate(ascii_uppercase)
)
df1 = df.join(df['Column'].str.extractall('(\d+)')\
.unstack(1).droplevel(0,1))\
.rename(columns=alpha_cols)
print(df1)
Column A B
0 CHPS CHTN 28 GR 1 ITEM 28 1
1 CHPS CHTN 28 GR 1 ITEM 28 1
【讨论】:
以上是关于如何在 pandas DataFrame 中的字符串模式后提取数字并在 python 中创建新功能的主要内容,如果未能解决你的问题,请参考以下文章
如何从列类型列表中删除 pandas DataFrame 中的空值
如何检查一系列字符串是不是包含在 PANDAS DataFrame 列中并将该字符串分配为行中的新列?
Python/Pandas:如何将字符串列表与 DataFrame 列匹配
如何在 pandas DataFrame 中的字符串模式后提取数字并在 python 中创建新功能