如何用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
相关产品推荐
相关产品推荐

