首页 > 解决方案 > 重新索引组以添加缺失的行

问题描述

我正在尝试重新索引组以扩展缺少值的数据框。与 resample 对时间索引的工作类似,我试图为普通整数值实现这一点。

因此,对于属于某个组键(在我的情况下为 proID)的组,应确定存在的最大整数值(指定重采样过程的终点)。该组应通过该整数值的缺失值进行扩展(我试图通过重新索引来实现)。

我有一个数据框,每个 proID 有很多行和一个整数 bin 值,范围从 0 到 100 和一些无意义的列。基本上,如果某些数据丢失,则应填充 bin 值,这与重新采样对时间索引所做的类似。

def rsmpint(df):
    mx = df.bin.max() #identify maximal existing bin value in dataframe (group)
    no = (mx * 20 / 100).astype(np.int64) + 1 #calculate number of bin values
    idx = pd.Index(np.linspace(0,mx,no), name='bin') # define full bin-Index for df (group)
    df.set_index('bin').reindex(idx).ffill().reset_index(drop=True, inplace=True)
    return df


DF.groupby('proID').apply(rsmpint)

假设对于特定的 proID,当前有 5 个 bin 值 [0, 15, 20, 40, 65](即原始 proID 组的 5 行)。输出应该是一个扩展的 proID 组,其 bin 值 [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 60, 65] 使用 ffill 填充“无意义”列的内容()。

标签: pandasreindex

解决方案


推荐阅读