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

如何读取指定格式文本文件并创建等价的Pandas DataFrame

问题描述

给定文本文件data.txt的内容如下:

John: 1 
Jane: 5 
Mark: 7 
Dan: 2

如何使用Python读取该文件,创建出与以下代码逻辑等价的Pandas DataFrame?

# 初始化数据
data = {'Name': ['John', 'Jane', 'Mark', 'Dan'],
        'Count': [1, 5, 7, 2]}

# 创建DataFrame
df = pd.DataFrame(data)

解决方法

方法1:逐行手动处理

适合需要自定义处理逻辑的场景,手动读取每一行并拆分数据:

import pandas as pd

names = []
counts = []

# 打开文件逐行读取
with open('data.txt', 'r', encoding='utf-8') as f:
    for line in f:
        # 去掉行首尾的空白字符,按": "拆分
        name, count_str = line.strip().split(': ')
        names.append(name)
        # 将计数转为整数类型
        counts.append(int(count_str))

# 构建目标DataFrame
df = pd.DataFrame({'Name': names, 'Count': counts})

方法2:用Pandas的read_csv快速读取

利用read_csv的分隔参数直接解析文件,效率更高:

import pandas as pd

# 指定分隔符为": ",设置列名,同时指定Count列的类型为整数
df = pd.read_csv(
    'data.txt',
    sep=': ',
    header=None,
    names=['Name', 'Count'],
    dtype={'Count': int},
    engine='python'
)

注意:这里必须指定engine='python',因为C引擎不支持多字符的分隔符(这里是冒号加空格)。

方法3:正则分隔适配灵活格式

如果文件里冒号前后的空格数量不固定,可以用正则表达式作为分隔符,兼容性更强:

import pandas as pd

# 用正则匹配冒号前后任意数量的空格,拆分列
df = pd.read_table(
    'data.txt',
    sep='\s*:\s*',
    header=None,
    names=['Name', 'Count'],
    dtype={'Count': int},
    engine='python'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:22:06