首页 > 解决方案 > 在 groupby 和 reindex 之后前向填充特定列

问题描述

我想用该组中的“id”填充一个特定列,即“id”列,并在应用分组重新索引后用 0 向前填充其他列。

我当前使用 0 填充所有缺失值的版本如下所示:

def reindex_by_date(df):
    bd = pd.bdate_range('2000-12-18', '2020-12-31')
    return df.reindex(bd)
test.groupby('id').apply(reindex_by_date).reset_index(0, drop=True)

但我无法在该组中用 id 填充“id”

标签: pythonpandas-groupbyreindexffill

解决方案


我找到了解决方案。发布所以也许它会帮助别人:

def reindex_by_date(df):
    df = df.reindex(pd.bdate_range('2000-12-18', '2020-12-31'))
    df['id']=df['id'].ffill().bfill()
    df['weight'] = df['weight'].fillna(0)
    df['return'] = df['return'].fillna(0)
    return (df)

test_new= test.groupby('id').apply(reindex_by_date).rename_axis(('id','date')).drop('id',1).reset_index()

推荐阅读