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

如何用Python从CSV文件列的字符串中提取整数?

问题解决:从CSV列提取整数并打印

原代码的核心问题

  1. 遍历DataFrame方式错误:for row in df只会遍历列名(此处就是"A"),根本没拿到每行的实际数据
  2. 判断条件完全不符:你写的row == ('NSIT ,A: ,')和CSV里的实际行内容(比如" NSIT ,A: ,-213")完全不匹配,所以不会进入任何分支
  3. 缺少整数提取逻辑:没有对字符串做分割、清理和类型转换的处理
  4. 未处理空行:CSV里的空行会导致后续处理出错

修正方案1:用Pandas向量操作(高效简洁)

这种方法利用Pandas的字符串处理能力,批量处理整列数据:

import pandas as pd

# 读取CSV,跳过空行,指定列名为"A"
df = pd.read_csv("T4.csv", names=["A"], skip_blank_lines=True)

# 清理字符串并提取整数:
# 1. 去掉每行前后的空白字符
# 2. 按逗号分割字符串
# 3. 取最后一个部分(整数所在的位置)
# 4. 再次清理空白后转成整数类型
df['extracted_int'] = df['A'].str.strip().str.split(',').str[-1].str.strip().astype(int)

# 提取A/B标识并打印结果
for _, row in df.iterrows():
    # 从分割后的第二部分提取A/B(去掉冒号和空白)
    label = row['A'].strip().split(',')[1].strip().replace(':', '')
    print(f"{label}: {row['extracted_int']}")

修正方案2:逐行遍历处理(适合新手理解)

如果想更直观地看到每一步的处理逻辑,可以用逐行循环:

import pandas as pd

csv_files = ["T4.csv"]

for file_name in csv_files:
    # 读取文件时跳过空行,避免处理空内容
    df = pd.read_csv(file_name, names=["A"], skip_blank_lines=True)
    
    # 遍历A列的每一行内容
    for line_content in df['A']:
        # 第一步:去掉字符串前后的空格、换行符
        cleaned_line = line_content.strip()
        # 第二步:按逗号分割成多个部分
        parts = cleaned_line.split(',')
        # 第三步:提取整数部分(最后一个元素)并转成int
        integer = int(parts[-1].strip())
        # 第四步:提取A/B标识(第二个元素去掉冒号)
        label = parts[1].strip().replace(':', '')
        # 打印结果
        print(f"{label}: {integer}")

运行结果

两种方案都会输出:

A: -213
A: -43652
B: -39
A: -2
B: -46

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:55:15