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

如何用Python将多文本提取的Excel列数据转置为行格式?

解决文本数据转Excel行形式的问题

你的核心问题是读取每个文本文件后得到的是单列数据,直接合并后依然纵向排列,需要把每个用户的4条数据转成一行再整合。以下是修改后的代码和思路:

问题分析

你原代码中,每个文本文件读取后是单列DataFrame,选取4行后依然保持单列结构,合并后所有数据纵向堆叠,导出自然是列形式。transpose()没用是因为它仅把单列转成单行,但多个文件的话会变成多列,不符合你要的「每行对应一个用户」的需求。

修改后的代码

import glob
import pandas as pd

while True:
    path = input("Insert location:")
    file_list = glob.glob(path + "/*.txt")
    rows_list = []
    for file in file_list:
        # 读取文本文件,不将第一行识别为表头
        df = pd.read_csv(file, header=None)
        # 选取指定行并转成扁平列表(对应一行数据)
        selected_values = df.take([0, -1, -4, -7]).values.flatten().tolist()
        rows_list.append(selected_values)
    # 将所有行数据组合成多行DataFrame
    excl_merged = pd.DataFrame(rows_list)
    # 导出到Excel
    with pd.ExcelWriter('Total.xlsx', engine='xlsxwriter') as writer:
        excl_merged.to_excel(writer, sheet_name='Sheet1', index=False, header=False)
    print('success!!')

关键修改点

  • 添加header=None:避免把第一个值(如David)误识别为表头,确保所有行都是有效数据。
  • 转成扁平列表:把每个文件的4条单列数据合并成一个列表,作为最终DataFrame的一行。
  • 构造多行DataFrame:直接将所有行列表组合成横向排列的结构,导出后就是你要的行形式。

备选读取方式(若csv读取异常)

如果文本文件存在格式问题,可手动读取处理:

with open(file, 'r') as f:
    # 过滤空行并去除首尾空格
    lines = [line.strip() for line in f if line.strip()]
selected_values = [lines[0], lines[-1], lines[-4], lines[-7]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:15:33