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

