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

如何用Pandas读取特殊格式CSV并转换为指定结构DataFrame?

处理特殊格式CSV并转换为指定结构DataFrame的方法

问题描述

我需要读取一种特殊格式的CSV文件,其内容结构如下:

1 file, 13 insertions, 23 deletions
1 file, 43 deletions
2 file, 7 insertions
4 file, 13 insertions, 45 deletions

希望将其转换为如下结构的DataFrame:

file   insertions  deletions
1      13          23
1      0           43
2      7           0
4      13          45

解决方案

以下提供两种基于Python pandas库的实现方式,可按需选择:

方法1:逐行解析(直观易懂)

逐行读取文件内容,拆分字段后提取数值,缺失字段自动填充0:

import pandas as pd

data_rows = []
# 替换为你的CSV文件实际路径
with open('target_file.csv', 'r', encoding='utf-8') as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        # 按逗号拆分并去除每个片段的首尾空格
        segments = [seg.strip() for seg in line.split(',')]
        
        # 提取文件数量
        file_count = int(segments[0].split()[0])
        inserts = 0
        deletes = 0
        
        # 遍历剩余片段,提取插入/删除数值
        for seg in segments[1:]:
            num, tag = seg.split()
            num = int(num)
            if tag == 'insertions':
                inserts = num
            elif tag == 'deletions':
                deletes = num
        
        data_rows.append({
            'file': file_count,
            'insertions': inserts,
            'deletions': deletes
        })

# 生成目标DataFrame
result_df = pd.DataFrame(data_rows)
print(result_df)

方法2:正则表达式提取(简洁高效)

利用正则表达式一次性匹配所有字段,自动处理缺失值:

import pandas as pd

# 读取原始文件,不指定表头
raw_df = pd.read_csv('target_file.csv', header=None, names=['raw_content'], encoding='utf-8')

# 正则规则:捕获file、insertions、deletions的数值,缺失项返回空值
pattern = r'(?P<file>\d+) file(?:, (?P<insertions>\d+) insertions)?(?:, (?P<deletions>\d+) deletions)?'
result_df = raw_df['raw_content'].str.extract(pattern)

# 转换为整数类型,空值填充0
result_df = result_df.apply(pd.to_numeric).fillna(0).astype(int)

print(result_df)

两种方法最终都会输出符合要求的DataFrame,可根据文件规模和个人习惯选择使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:33:26