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

使用Pandas将多个文本文件数据合并为单个DataFrame

解决方法:按行合并带年份列的姓名数据

我来帮你搞定这个问题!你的代码现在把每个文件的数据放到单独列里,核心问题出在合并方向错误,另外读取文件和添加年份列的方式也需要调整。下面一步步给你讲清楚:

问题分析

  1. 读取文件方式不对:你的文本文件是逗号分隔的,但pd.read_table默认用制表符分隔,会把整行内容读成一列,后续拼接字符串的操作也完全偏离了“新增年份列”的需求。
  2. 添加年份列的逻辑错误:pd.read_table(file)+","+year是把整个DataFrame的每个元素都和年份字符串拼接,而不是新增一列存储年份。
  3. 合并方向错误:pd.concat(..., axis=1)是按列合并数据,你需要的是按行追加,应该使用axis=0(这也是concat的默认参数)。

修正后的完整代码

import pandas as pd

def main():
    FILE_FOLDER = "你的文件夹路径"  # 替换成你实际的文件夹路径
    files = file_paths(FILE_FOLDER)  # 假设这个函数能正确返回所有yob####.txt的路径
    
    df_list = []
    for file in files:
        # 从文件名提取年份:比如yob1880.txt,截取[3:7]得到'1880'
        year = file.split("\\")[-1][3:7]
        # 用read_csv读取逗号分隔的文件,指定列名让数据结构更清晰
        df = pd.read_csv(file, names=['Name', 'Gender', 'Count'])
        # 新增年份列,所有行自动填充当前文件对应的年份
        df['Year'] = year
        # 将处理好的DataFrame加入列表
        df_list.append(df)
    
    # 按行合并所有DataFrame,ignore_index重置索引避免重复
    big_df = pd.concat(df_list, ignore_index=True)
    # 保存到CSV,开启header=True保留列名,方便后续查看和处理
    big_df.to_csv("Combined.csv", header=True, index=False)

if __name__ == "__main__":
    main()

关键修改说明

  • 读取文件:用pd.read_csv替代pd.read_table,并通过names参数指定列名,确保每一列对应正确的数据(姓名、性别、数量)。
  • 添加年份列:直接用df['Year'] = year新增一列,简单高效,当前文件的所有行都会自动填充对应的年份。
  • 合并数据:pd.concat默认按行(axis=0)合并,这样每个文件的数据会依次追加到前一个文件的行后面,完全符合你“按年份顺序追加数据”的需求。
  • 保存结果:开启header=True让输出的CSV包含列名,后续查看或分析数据时会更直观。

这样处理后,你的Combined.csv就会是所有年份的数据按行排列,每行都包含姓名、性别、数量和对应的年份啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:23:18