You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多列字符串提取数字失败:Pandas代码问题及预期输出求助

解决DataFrame多列字符串提取数字的问题

原代码的问题

你之前的代码df['Diatom col', 'Cistos col']是错误的列选择方式,pandas中选择多列必须使用双层方括号,单层方括号加元组的方式无法正确选中目标列,这直接导致后续str.extract执行无效。

正确解决方案

1. 提取每列中的第一个数字序列

如果你的字符串中只有一组数字,或者只需要提取第一个连续数字序列,使用以下代码:

# 正确选择多列,对每列应用数字提取
df1 = df[['Diatom col', 'Cistos col']].str.extract('(\d+)')
# 可选:将提取的字符串转为整数类型(根据需求也可转float)
df1 = df1.astype(int)

2. 处理包含多组数字的场景(可选)

如果某列字符串里有多个独立数字序列,需要提取所有数字的话,可以用str.extractall再整理结果:

# 提取所有数字,返回带多层索引的结果
extracted = df[['Diatom col', 'Cistos col']].str.extractall('(\d+)')
# 重置索引并合并同一行的多个数字
df1 = extracted.unstack().droplevel(0, axis=1)
# 重命名列(方便区分同一列的多个数字)
df1.columns = [f'{col}_num{i+1}' for col in df1.columns.levels[0] for i in range(df1.columns.levels[1].size)]

示例效果

假设输入DataFrame为:

Diatom colCistos col
abc123defxyz456
789test012abc345

执行第一种方案后,输出df1为:

Diatom colCistos col
123456
789012

内容的提问来源于stack exchange,提问作者Susana Martins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:25:20