Pandas在Groupby中重新编制日期

时间:2015-08-28 16:18:26

标签: python pandas reindex

我有一个以零星日期为索引的数据框,以及columns ='id'和'num'。我想pd.groupby'id'列,并将reindex应用于数据框中的每个组。

我的示例数据集如下所示:

            id  num
2015-08-01  1   3
2015-08-05  1   5
2015-08-06  1   4
2015-07-31  2   1
2015-08-03  2   2
2015-08-06  2   3

pd.reindex ffill后的预期输出为:

            id  num
2015-08-01  1   3
2015-08-02  1   3
2015-08-03  1   3
2015-08-04  1   3
2015-08-05  1   5
2015-08-06  1   4
2015-07-31  2   1
2015-08-01  2   1
2015-08-02  2   1
2015-08-03  2   2
2015-08-04  2   2
2015-08-05  2   2
2015-08-06  2   3

我试过这个,除其他外无济于事: newdf=df.groupby('id').reindex(method='ffill') 哪个返回错误:AttributeError: Cannot access callable attribute 'reindex' of 'DataFrameGroupBy' objects, try using the 'apply' method

非常感谢任何帮助

1 个答案:

答案 0 :(得分:8)

这可能是一种更为流畅的方式,但这样做有效:

def reindex_by_date(df):
    dates = pd.date_range(df.index.min(), df.index.max())
    return df.reindex(dates).ffill()

df.groupby('id').apply(reindex_by_date).reset_index(0, drop=True)