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

如何为DataFrame列表添加文件名衍生变量

我太懂这种手动重复操作的痛苦了!完全不用这么麻烦,咱们用批量处理的方式一步搞定——核心思路就是把你的DataFrame列表和对应的州名(文件名)列表配对,一次性给每个DataFrame加上州名列,最后合并就行。

高效批量添加州名列方案

假设你已经有两个关键列表:

  • df_list: 存放所有DataFrame的列表
  • file_names: 对应的文件名(州名)列表,必须和df_list的顺序完全对应

方法1:列表推导式(简洁高效)

用列表推导式遍历每一对DataFrame和州名,直接添加新列,最后合并成大DataFrame:

import pandas as pd

# 批量给每个DataFrame添加州名列
df_with_state = [df.assign(state=state_name) for df, state_name in zip(df_list, file_names)]
# 合并为一个完整的大DataFrame
final_df = pd.concat(df_with_state, ignore_index=True)

这里的assign()方法会返回添加了新列的DataFrame副本,不会修改原DataFrame,安全又省心。

方法2:循环遍历(适合需额外操作的场景)

如果中间还要对每个DataFrame做清洗、筛选等额外操作,用循环会更直观:

import pandas as pd

processed_dfs = []
for df, state_name in zip(df_list, file_names):
    # 添加州名列
    df['state'] = state_name
    # 这里可以插入其他操作,比如:df = df.dropna()
    processed_dfs.append(df)

# 合并所有处理后的DataFrame
final_df = pd.concat(processed_dfs, ignore_index=True)

额外小技巧:提取纯州名(如果文件名带后缀)

如果你的文件名是带后缀的(比如California.csv),可以先处理字符串提取纯州名:

# 方法1:按后缀分割
file_names = [name.split('.')[0] for name in original_file_names]

# 方法2:用os模块更稳妥(支持各种后缀格式)
import os
file_names = [os.path.splitext(name)[0] for name in original_file_names]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:38:43