IC1*_*456 2 python regex python-3.x pandas
我正在尝试从 Python 数据框中的现有列创建一个新列。
下表显示的是示例数据,希望通过从列 Col2 中提取特定文本来添加新列。
下面是我正在使用的正则表达式,它循环遍历行来计算新的列值。我正在寻找甚至可以处理 Col2 中的空单元格的正则表达式。
“[AZ]*[AZ]。{9}”
谁能告诉我更好的方法吗?
您可以使用
import pandas as pd
cols = {'Col1':['Abc', 'def'],
'Col2': ['abc.02.06.05 (Control NA', 'Test acc.02.06.05 Unknown'],
}
df = pd.DataFrame(cols)
df['NewCol'] = df['Col2'].str.extract(r'(\w+(?:\.\d+)+)', expand=False)
Run Code Online (Sandbox Code Playgroud)
输出:
Col1 Col2 NewCol
0 Abc abc.02.06.05 (Control NA abc.02.06.05
1 def Test acc.02.06.05 Unknown acc.02.06.05
Run Code Online (Sandbox Code Playgroud)
正则表达式(\w+(?:\.\d+)+)匹配 1+ 个单词字符,然后匹配一个或多个 a 序列.以及一个或多个数字。
创建(...)一个捕获组,当您需要使用 提取子字符串(第一次出现)时,这是必需的str.extract。
如果您需要更精确的正则表达式,则需要提出实际要求。例如,您可能只想提取空白边界之间的子字符串,并且仅当字母数字字符串后面存在三组点分隔的两位数字时:
r'(?<!\S)(\w+(?:\.\d{2}){3})(?!\S)'
Run Code Online (Sandbox Code Playgroud)
请参阅此正则表达式演示。
| 归档时间: |
|
| 查看次数: |
2991 次 |
| 最近记录: |