按时间点补全DataFrame所有唯一Item并按规则填充值
实现每个TimePoint包含所有唯一Item的方法
我来帮你搞定这个需求!要让每个timePoint都涵盖数据里所有唯一的item,没出现过的item对应的value填充NaN,咱们可以按以下步骤来操作:
思路解析
核心思路是先构造出timePoint和所有唯一item的全组合,再和原数据做左合并,这样缺失的记录就会自动用NaN填充了。
具体代码实现
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({'timePoint': [1,1,1,1,2,2,2,2,3,3,3,3], 'item': [1,2,3,4,3,4,5,6,1,3,7,2], 'value': [2,4,7,6,5,9,3,2,4,3,1,5]}) # 第一步:提取所有不重复的timePoint和item unique_times = df['timePoint'].unique() unique_items = df['item'].unique() # 第二步:生成timePoint和item的全笛卡尔积组合 full_grid = pd.MultiIndex.from_product( [unique_times, unique_items], names=['timePoint', 'item'] ).to_frame(index=False) # 第三步:和原数据左合并,自动填充缺失的value为NaN final_df = pd.merge(full_grid, df, on=['timePoint', 'item'], how='left') # 查看结果 print(final_df)
运行结果说明
运行后你会看到,每个timePoint下都包含了所有7个唯一item:
- 比如
timePoint=1里新增了item5、6、7,它们的value是NaN timePoint=2里新增了item1、2、7,value为NaNtimePoint=3里新增了item4、5、6,value为NaN
这样就完美满足你的需求啦!
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

