使用Python Pandas按序列插入行:补全ClickMonth并填充ClickRate
嘿,我来帮你搞定这个数据集补全的问题!用Python的pandas就能轻松实现,完全符合你要的规则——前期缺失的ClickRate填0.00,后期缺失的沿用前一个有效数值。具体步骤如下:
解决方案:用Pandas补全ClickMonth连续序列并填充缺失值
1. 加载原始数据
首先把你的原始数据转换成pandas的DataFrame:
import pandas as pd # 你的原始数据 raw_data = [ ["2017-05", 23, 4, 14.982306], ["2017-05", 23, 18, 19.253211], ["2017-05", 23, 22, 19.793899], ["2017-06", 22, 3, 20.346334], ["2017-06", 22, 5, 22.545454] ] df = pd.DataFrame(raw_data, columns=["Month", "MonthOnBook", "ClickMonth", "ClickRate"])
2. 生成每个分组的完整ClickMonth序列
我们需要按Month和MonthOnBook分组,为每个组生成从1到该组最大ClickMonth的连续序列:
# 先获取每个分组的最大ClickMonth值 grouped_max_cm = df.groupby(["Month", "MonthOnBook"])["ClickMonth"].max().reset_index() # 为每个分组构建完整的ClickMonth序列 full_data = [] for _, group_info in grouped_max_cm.iterrows(): current_month = group_info["Month"] current_mob = group_info["MonthOnBook"] max_cm = group_info["ClickMonth"] # 生成1到max_cm的连续整数序列 cm_sequence = pd.DataFrame({ "Month": [current_month] * max_cm, "MonthOnBook": [current_mob] * max_cm, "ClickMonth": range(1, max_cm + 1) }) full_data.append(cm_sequence) # 把所有分组的完整序列合并成一个DataFrame full_df = pd.concat(full_data, ignore_index=True)
3. 合并原始数据并按规则填充缺失值
现在把原始数据和完整序列左连接,然后按你的规则填充ClickRate:
# 左连接保留完整序列的所有行,匹配原始数据中的有效ClickRate merged_df = pd.merge(full_df, df, on=["Month", "MonthOnBook", "ClickMonth"], how="left") # 填充缺失值:先向后填充(沿用前一个有效值),再把开头的缺失值补0.00 merged_df["ClickRate"] = merged_df.groupby(["Month", "MonthOnBook"])["ClickRate"].apply( lambda x: x.fillna(method="ffill").fillna(0.00) ) # 可选:把ClickRate格式化为两位小数,让结果更整洁 merged_df["ClickRate"] = merged_df["ClickRate"].round(2)
4. 最终结果示例
运行完代码后,merged_df就是你想要的数据集。比如2017-05 23分组的部分结果如下:
2017-05 23 1 0.00
2017-05 23 2 0.00
2017-05 23 3 0.00
2017-05 23 4 14.98
...
2017-05 23 17 14.98
2017-05 23 18 19.25
...
2017-05 23 21 19.25
2017-05 23 22 19.79
关键点说明
- 分组操作确保我们只在同一个
Month和MonthOnBook的范围内处理,不会跨组混淆数据 - 填充顺序很重要:先**向后填充(ffill)**处理后期缺失值,再用
fillna(0.00)补前期的缺失值,这样就不会把后期的缺失值也填成0 - 如果你用的是其他工具(比如SQL),思路类似:先生成每个分组的连续序列,再左连接原始数据,最后用窗口函数填充缺失值
内容的提问来源于stack exchange,提问作者joelthakkar
相关产品推荐
相关产品推荐

