如何从DataFrame中提取多个子串并添加为新列?
从Pandas DataFrame提取子串并添加为新列
解决方案:使用正则表达式提取
借助Pandas的str.extract()方法,结合正则表达式匹配目标子串,可直接批量生成新列。
1. 构造示例数据
import pandas as pd # 构造你的示例DataFrame data = { 'Serienummer': [ 'SAA VKS MSI A1 R 7,500 1', 'SAA VKS MSI A1P 7,500 1', 'SAA VKS MSI A1 R 14,370 5' ] } df = pd.DataFrame(data, index=[15, 29, 36])
2. 提取子串并添加新列
# 用正则分组匹配,一次性提取三个目标子串 df[['column1', 'column2', 'column3']] = df['Serienummer'].str.extract(r'.*(A\d).*?(\d+,\d+) (\d)$') # 若第二行的column1需要从A1改为A2(疑似输入笔误),可单独修正 # df.loc[29, 'column1'] = 'A2'
3. 结果展示
执行后得到的DataFrame如下:
Serienummer column1 column2 column3 15 SAA VKS MSI A1 R 7,500 1 A1 7,500 1 29 SAA VKS MSI A1P 7,500 1 A1 7,500 1 36 SAA VKS MSI A1 R 14,370 5 A1 14,370 5
正则表达式说明
.*:匹配任意字符直到找到目标片段(A\d):捕获以A开头、后跟一位数字的片段(对应column1).*?:非贪婪匹配任意字符,避免过度匹配(\d+,\d+):捕获带逗号的数值格式(对应column2)(\d)$:捕获字符串末尾的单个数字(对应column3)
内容的提问来源于stack exchange,提问作者Tessa
相关产品推荐
相关产品推荐

