在数据框中添加缺少的数据和日期

时间:2018-03-14 17:06:21

标签: python pandas dataframe

我有以下数据框

    A   B   C    D     date 
   AU  AT   0.9  0.7   3/31/1960
   AU  AT   0.3  0.6   6/30/1960 
   AT  AU   0.7  0.5   4/30/1960
   AT  AU   0.65 0.4   6/30/1960

举个例子,假设我的最低开始日期是3/31/1960,我的最大值是6/30/1960

我想根据按A,B和日期分组的数据转发填写C和D列。 所以我的最终数据框将是

    A   B   C    D      date
    AU  AT  0.9  0.7    3/31/1960
    AU  AT  0.9  0.7    4/30/1960
    AU  AT  0.9  0.7    5/31/1960
    AU  AT  0.3  0.6    6/30/1960
    AT  AU  0.7  0.5    4/30/1960
    AT  AU  0.7  0.5    5/31/1960
    AT  AU  0.65 0.4    6/30/1960

任何帮助表示赞赏 非常感谢

1 个答案:

答案 0 :(得分:2)

您可以在reindex

中使用groupby
df.date=pd.to_datetime(df.date)
df
Out[85]:
    A   B     C    D       date
0  AU  AT  0.90  0.7 1960-03-31
1  AU  AT  0.30  0.6 1960-06-30
2  AT  AU  0.70  0.5 1960-04-30
3  AT  AU  0.65  0.4 1960-06-30

df.groupby('A').apply(lambda x : x.set_index(['date']).reindex(pd.date_range(x['date'].min(),x['date'].max(),freq='m')).ffill())
Out[91]: 
                A   B     C    D
A                               
AT 1960-04-30  AT  AU  0.70  0.5
   1960-05-31  AT  AU  0.70  0.5
   1960-06-30  AT  AU  0.65  0.4
AU 1960-03-31  AU  AT  0.90  0.7
   1960-04-30  AU  AT  0.90  0.7
   1960-05-31  AU  AT  0.90  0.7
   1960-06-30  AU  AT  0.30  0.6