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

如何直接将自动生成的文本文件导入Python并转换为DataFrame?

直接加载文本文件为Pandas DataFrame的方法

当然可以直接加载原文本文件转成DataFrame,不用先转CSV。利用你提到的"for"作为可靠分隔符,结合Pandas的文本处理功能就能搞定,给你两种实用方法:

方法1:用read_csv直接分割+列清洗

这种方法利用Pandas的读取函数,以"for"为分隔符拆分每行,再清洗出需要的字段:

import pandas as pd

# 读取文件,用正则匹配「任意空格+for+任意空格」作为分隔符
df = pd.read_csv('你的文件名.txt', sep=r'\s+for\s+', engine='python', header=None)

# 提取Statement编号:从第一列中匹配Statement#后的数字
df['Statement'] = df[0].str.extract(r'Statement# (\d+)')

# 处理金额:去掉$符号,转为数值类型
df['Amount'] = df[1].str.replace('$', '').astype(float)
# 可选:把整数金额转成整数格式(比如-51.00变成-51)
df['Amount'] = df['Amount'].apply(lambda x: int(x) if x.is_integer() else x)

# 提取月份:去掉第三列的"the month of "前缀
df['Month'] = df[2].str.replace('the month of ', '')

# 只保留需要的列
df = df[['Statement', 'Amount', 'Month']]

print(df)

方法2:正则表达式精准提取字段

如果文本格式完全固定,用正则直接匹配每行的三个目标字段更高效:

import pandas as pd
import re

# 定义正则模式,匹配Statement编号、金额、月份
pattern = r'Statement# (\d+) for \$([-?\d+\.\d*]) for the month of (.+)'

data_rows = []
with open('你的文件名.txt', 'r', encoding='utf-8') as f:
    for line in f:
        match_result = re.search(pattern, line.strip())
        if match_result:
            stmt_num = match_result.group(1)
            amount = float(match_result.group(2))
            # 转换整数金额为int
            amount = int(amount) if amount.is_integer() else amount
            month_str = match_result.group(3)
            data_rows.append([stmt_num, amount, month_str])

# 转为DataFrame
final_df = pd.DataFrame(data_rows, columns=['Statement', 'Amount', 'Month'])

print(final_df)

两种方法都能得到你想要的DataFrame结构,根据自己的习惯选就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:07:12