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

将文件名设为列名合并光谱数据TXT文件时遇axis参数冲突问题

解决多吸光度数据文件合并的问题

你这段代码里的pd.concat调用明显写错了——pd.concat的参数结构是pd.concat(要合并的对象列表, axis=合并方向),你把一个字典作为第二个参数传进去,直接和axis参数冲突了。而且你已经提前把读取好的DataFrame放到to_concat列表里,后面又重复读取一次文件,完全是冗余操作。

下面是修正后的代码,能实现你要的“用文件名作为吸光度列标题,合并成单一文件”的需求:

import pandas as pd
from pathlib import Path

# 定义数据路径和输出路径
path = Path(r'C:\Users\Jake\Desktop\pythontest\data')
output_path = Path(r'C:\Users\Jake\Desktop\pythontest\data\new\output.txt')

# 初始化合并后的DataFrame
merged_df = None

for file in path.glob('*.txt'):
    # 读取文件:跳过前17行,指定制表符分隔,给列命名
    df = pd.read_csv(file, skiprows=17, sep="\t", names=['波长', '吸光度'])
    
    if merged_df is None:
        # 处理第一个文件:保留波长列,把吸光度列改名为文件名(去掉.txt后缀)
        merged_df = df.rename(columns={'吸光度': file.stem})
    else:
        # 处理后续文件:只取波长和吸光度列,改吸光度列名为文件名,按波长对齐合并
        merged_df = merged_df.merge(
            df[['波长', '吸光度']].rename(columns={'吸光度': file.stem}),
            on='波长'
        )

# 输出合并后的文件:保留表头,不输出索引
merged_df.to_csv(output_path, sep='\t', index=False)
print(merged_df.head())

关键说明

  • 给每个读取的文件指定列名['波长', '吸光度'],避免无列名导致的混乱
  • 用file.stem获取不带后缀的文件名,作为对应吸光度列的标题,后续软件打开能直接识别
  • 通过merge按波长列对齐合并,确保不同文件的同一波长数据对应到同一行(如果你的文件波长顺序/数值完全一致,也可以用下面更简洁的写法)

如果确认所有文件的波长列完全一致(顺序、数值都没差),可以用pd.concat简化代码:

import pandas as pd
from pathlib import Path

path = Path(r'C:\Users\Jake\Desktop\pythontest\data')
output_path = Path(r'C:\Users\Jake\Desktop\pythontest\data\new\output.txt')

absorbance_cols = []
wavelengths = None

for file in path.glob('*.txt'):
    df = pd.read_csv(file, skiprows=17, sep="\t", names=['波长', '吸光度'])
    if wavelengths is None:
        wavelengths = df['波长']
    # 提取吸光度列并改名为文件名
    absorbance_cols.append(df['吸光度'].rename(file.stem))

# 合并波长列和所有吸光度列
merged_df = pd.concat([wavelengths] + absorbance_cols, axis=1)

merged_df.to_csv(output_path, sep='\t', index=False)
print(merged_df.head())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:48:16