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

使用循环修改DataFrame:批量处理年份命名的姓名统计TXT文件

批量合并yob年份TXT文件为带年份列的CSV

不用提前修改原TXT文件,直接用Python+pandas就能搞定,给你个靠谱的实现方案:

核心思路

遍历所有符合命名规则的TXT文件,提取文件名里的年份,读取文件内容后给每行加上年份列,最后把所有数据合并成一个CSV。

完整代码

import pandas as pd
import re
import os

# 替换成你的TXT文件所在文件夹路径
folder_path = "./your_folder_path"
all_dfs = []

# 遍历文件夹里的所有文件
for file_name in os.listdir(folder_path):
    # 只处理yob开头、txt结尾的文件
    if file_name.startswith("yob") and file_name.endswith(".txt"):
        # 用正则提取文件名里的4位年份
        year_match = re.search(r"\d{4}", file_name)
        if year_match:
            year = year_match.group()
            # 读取TXT文件,指定列名(原文件没有表头)
            df = pd.read_csv(os.path.join(folder_path, file_name), names=["Name", "Sex", "Frequency"])
            # 添加Year列
            df["Year"] = year
            # 把当前文件的数据存入列表
            all_dfs.append(df)

# 合并所有数据框
final_df = pd.concat(all_dfs, ignore_index=True)
# 保存为最终CSV(index=False是不保存行号)
final_df.to_csv("combined_names.csv", index=False)

常见问题排查

如果之前输出不符合预期,大概率是这几个原因:

  • 正则提取年份出错:比如没匹配到4位数字,或者文件名格式有差异,上面的\d{4}能精准匹配文件名里的4位年份
  • 读取文件时没指定列名:原TXT没有表头,直接读会把第一行数据当成表头,导致列混乱
  • 循环中没有累加数据:比如每次都覆盖了之前的DataFrame,而不是用append存入列表后再合并

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:31:19