Python新手使用pandas合并数据集后如何实现指定字段按企业重复填充
实现方案
一、原有合并代码优化
你当前的合并代码存在2个可优化的问题,调整后运行更稳定:
- 缺少
os模块导入,直接运行会触发名称报错 - pandas 2.0+版本已废弃
DataFrame.append()方法,替换为pd.concat()性能更高,兼容性更好
优化后的合并代码如下:
import pandas as pd import os # 设置工作目录 cwd = r"C:\Users\justi\Documents\MyName\Analysis\Database" files = os.listdir(cwd) df_list = [] # 批量读取所有xlsx文件 for file in files: if file.endswith('.xlsx'): file_path = os.path.join(cwd, file) df_list.append(pd.read_excel(file_path)) # 合并所有数据 df = pd.concat(df_list, ignore_index=True)
二、指定字段重复填充实现
你的需求是同一企业对应的item no、item、category、category code四个字段统一填充,直接用分组填充逻辑即可实现,完全匹配你截图中的空值补全效果:
# 请替换为你数据集中对应企业的字段名 group_col = "company" # 需要填充的目标字段 fill_cols = ["item no", "item", "category", "category code"] # 同企业分组下,先向前填充再向后填充,覆盖所有空值 df[fill_cols] = df.groupby(group_col)[fill_cols].ffill().bfill() # 如果同一企业下这四个字段值唯一,也可以用统一取首个有效值的方式填充 # df[fill_cols] = df.groupby(group_col)[fill_cols].transform( # lambda x: x.fillna(x.dropna().iloc[0]) if x.notna().any() else x # ) # 导出最终结果 df.to_excel('newcombined.xlsx', index=False)
如果运行后仍存在未填充的空值,说明对应企业分组下这四个字段没有任何非空有效值,需要单独补充对应基础数据后再运行。
内容的提问来源于stack exchange,提问作者xit_123
相关产品推荐
相关产品推荐

