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

如何将空格排版的纯文本表格转为Python的pandas DataFrame?

实现步骤与代码

1. 核心思路

由于文本文件中的表格仅靠空格排版,且包含多个时间维度的独立表格,我们需要先拆分这些表格,再逐个解析为小DataFrame,最后合并成目标结构的大DataFrame。

2. 完整代码实现

import pandas as pd

# 读取文本文件,过滤空行
with open('your_data.txt', 'r') as f:
    lines = [line.strip() for line in f if line.strip()]

# 拆分多个表格:以时间标题(含Three/Nine Months Ended)作为分隔标志
tables = []
current_table = []
for line in lines:
    if 'Three Months Ended' in line or 'Nine Months Ended' in line:
        if current_table:
            tables.append(current_table)
        current_table = [line]
    else:
        current_table.append(line)
if current_table:
    tables.append(current_table)

# 逐个解析表格并合并
merged_df = None
for table in tables:
    time_column = table[0]
    # 用空格分隔数据行,生成单时间维度的DataFrame
    single_df = pd.read_csv(
        pd.io.common.StringIO('\n'.join(table[1:])),
        sep='\s+',
        names=['部门/团队', time_column]
    )
    # 合并到总DataFrame,保留所有部门
    if merged_df is None:
        merged_df = single_df
    else:
        merged_df = pd.merge(merged_df, single_df, on='部门/团队', how='outer')

# 处理缺失值(按需替换为0或NaN)
merged_df = merged_df.fillna(0)

# 排序时间列(按时间逻辑调整顺序)
time_columns = [col for col in merged_df.columns if col != '部门/团队']
time_columns_sorted = sorted(time_columns, key=lambda x: (x.split()[0], x.split()[-1]))
merged_df = merged_df[['部门/团队'] + time_columns_sorted]

# 调整到20行数据:不足补空行,过多截断
if len(merged_df) < 20:
    empty_rows = pd.DataFrame(
        [[''] + [0]*len(time_columns_sorted)]*(20 - len(merged_df)),
        columns=merged_df.columns
    )
    merged_df = pd.concat([merged_df, empty_rows], ignore_index=True)
elif len(merged_df) > 20:
    merged_df = merged_df.head(20)

# 输出结果
print(merged_df)

3. 关键细节说明

  • 表格拆分:通过识别包含Three Months Ended或Nine Months Ended的行作为每个表格的标题,将文本拆分为独立的表格块。
  • 数据解析:使用pd.read_csv结合sep='\s+'处理任意数量的空格分隔,自动识别数据列。
  • 合并逻辑:用outer合并保留所有部门,避免丢失数据;缺失值可根据业务需求替换为0或保留NaN。
  • 行数调整:通过添加空行或截断,确保最终DataFrame恰好有20行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:35:56