Python Pandas如何从字符串中提取数字并拆分生成新的DataFrame行
问题解法
实现思路
- 先将原数据中用逗号分隔的字符串拆分为列表,再通过
explode方法将列表元素展开为独立行 - 用正则表达式从每行字符串中匹配提取字母前缀和数字部分,分别存入对应列
- 最后转换price列为数值类型即可
完整可运行代码
import pandas as pd # 构造示例原始数据 df = pd.DataFrame({'type': ['gp250,sp280']}) # 拆分逗号分隔值并展开为多行 df = df.assign(type=df['type'].str.split(',')).explode('type', ignore_index=True) # 提取字母和数字部分 # 如果需要gp250提取为25而非250,可将正则改为r'^([a-zA-Z]+)(\d{2})'即可 df[['type', 'price']] = df['type'].str.extract(r'^([a-zA-Z]+)(\d+)$') # 转换price为整数类型 df['price'] = df['price'].astype(int) print(df)
输出结果
type price 0 gp 250 1 sp 280
如果你需要gp对应的price为25,仅需调整正则表达式的数字匹配规则即可,上述代码注释中已给出对应修改方案。
内容的提问来源于stack exchange,提问作者boyenec
相关产品推荐
相关产品推荐

