将DataFrame元素作为CSV文件名,按匹配值生成独立CSV的问题求助
问题分析与解决方案
原代码存在的核心问题
- 循环内执行
pd.merge(df1, df2, on=['PHYCELLID'])会合并所有匹配的PHYCELLID数据,而非当前循环的单个ID对应内容,导致每次生成的CSV完全重复 - 文件名使用
df1['PHYCELLID']调用的是整个Series对象,会把所有ID拼接成混乱的文件名,而非单个ID对应的合法文件名
修正后的代码
import pandas as pd # 读取两个CSV文件 df1 = pd.read_csv('LookupPCI.csv') df2 = pd.read_csv('All_PCI.csv') # 获取需要匹配的所有不重复PHYCELLID值 target_ids = df1['PHYCELLID'].unique() # 遍历每个目标ID,筛选并保存对应数据 for cell_id in target_ids: # 从df2中筛选当前PHYCELLID对应的行 filtered_data = df2[df2['PHYCELLID'] == cell_id] # 保存为单个CSV文件,文件名包含当前ID filtered_data.to_csv(f"Looked up PCI list_{cell_id}.csv", index=False)
代码逻辑说明
- 用
unique()提取不重复的PHYCELLID,避免同一ID重复生成文件 - 直接通过布尔索引在df2中筛选目标ID的行,比merge更高效精准
- 使用f-string格式化文件名,确保每个文件对应唯一的PHYCELLID,命名清晰规范
内容的提问来源于stack exchange,提问作者syed
相关产品推荐
相关产品推荐

