Python如何基于指定列为DataFrame自动补全缺失的行数据
解决方法
你可以通过全量组合生成+左连接的方式实现需求,核心是先生成所有人员和课程的配对组合,再和原表关联补全缺失记录,具体实现步骤(基于Pandas)如下:
实现代码
import pandas as pd # 构造示例原数据(实际使用时替换为你自己的DataFrame即可) df = pd.DataFrame({ 'Name': ['Mark', 'Mark', 'Mark', 'David', 'David', 'Cindy', 'Cindy', 'Cindy'], 'Course Title': ['Math', 'English', 'Econ', 'Math', 'English', 'Math', 'English', 'Econ'], 'Completion Date': ['1/1/2021', '2/1/2021', '3/1/2021', '7/1/2021', '4/1/2021', '6/1/2021', '9/1/2021', '11/1/2021'] }) # 1. 提取所有唯一姓名、唯一课程列表 all_names = df['Name'].unique() all_courses = df['Course Title'].unique() # 2. 生成所有可能的人员-课程全量组合 full_pairs = pd.MultiIndex.from_product( [all_names, all_courses], names=['Name', 'Course Title'] ).to_frame(index=False) # 3. 全量组合左关联原表,缺失字段自动填充为NaN result = full_pairs.merge(df, on=['Name', 'Course Title'], how='left') # 可选:将空值替换为你需要的N/A result = result.fillna('N/A')
结果说明
运行上述代码后输出的result就是你需要的格式,会自动补全David缺修Econ的记录,其余字段填充为N/A。如果原表还有其他额外字段,左连接时也会自动补全对应空值,不需要额外适配。
内容的提问来源于stack exchange,提问作者puhles
相关产品推荐
相关产品推荐

