Pandas补充DataFrame缺失数据:如何自动添加缺失用户记录
补全缺失的周-用户记录
要自动添加第一周User1这类完全缺失的记录,核心思路是先生成所有周与所有用户的完整组合,再和原始数据合并,具体步骤如下:
- 提取数据中所有唯一的周和用户
- 生成两者的笛卡尔积,得到所有应存在的记录框架
- 通过左连接合并原始数据,自动补全缺失记录
代码实现
import pandas as pd # 原始数据 df = pd.DataFrame({'w':[1,1,2,2,2,3,3,3,4,4,4], 'user':['User2', 'User3','User1','User1','User2','User2','User2','User3','User1','User1','User3'], 'c':[7,2,3,1,2,5,4,6,9,8,7]}) # 生成周和用户的完整组合 all_weeks = df['w'].unique() all_users = df['user'].unique() full_records = pd.MultiIndex.from_product([all_weeks, all_users], names=['w', 'user']).to_frame(index=False) # 合并补全缺失记录 result_df = pd.merge(full_records, df, on=['w', 'user'], how='left') # 可选:将c列的空值替换为0或其他值(根据需求调整) # result_df['c'] = result_df['c'].fillna(0) print(result_df)
效果说明
运行后会得到包含所有周-用户组合的结果,其中第一周User1的记录会被自动添加,c列默认显示NaN,你可以通过fillna设置填充值(比如0)。
内容的提问来源于stack exchange,提问作者Artur Olenberg
相关产品推荐
相关产品推荐

