0

我有 2 个数据框(一个 df 和一个系列)。它们看起来像这样:

ranking 

Date        type
2009-12-31  AAB000001471      Q2
            AAB000001513      Q1
            AAB000002057      Q2
            AAB000002164      Q2
            AAB000003162      Q2
                              ..
2020-12-31  AAB013530250      Q1
            AAB013530706      Q1
            AAB013531035      Q1
            AAB135329261      Q1
            AAB013536471      Q2
Name: Actif_net_part, Length: 59621, dtype: category
Categories (4, object): ['Q1' < 'Q2' < 'Q3' < 'Q4']

和 :

base 

    Date    type
0   2020-10-06  AAB000006710
1   2020-09-22  AAB000006710
2   2020-09-08  AAB000006710
3   2020-08-25  AAB000006710
4   2020-02-25  AAB000006710
... ... ...
11477259    2019-05-15  AAB013282712
11477260    2019-05-14  AAB013282712
11477261    2019-05-13  AAB013282712
11477262    2019-05-10  AAB013282712
11477263    2019-05-09  AAB013282712
11477264 rows × 2 columns

第一个是年度数据,而第二个是每日数据。我想合并基于类型/日期列的两个基础,但对于年度数据,创建一个带有前向数据的每日数据。我的意思是:2009-12-31 AAB000001471 Q2 2010-01-01 AAB000001471 Q2 .... 直到年底,我有了一个新的价值

我试过了 :

ddd = ranking.groupby(['type', pd.Grouper(level=0, freq='D')]).apply(lambda x: x.fillna(method='ffill'))

但它不工作。我还有年度数据

谢谢

4

1 回答 1

0

GroupBy.apply与 一起使用DataFrame.asfreq

print (ranking)
Date        type        
2009-12-31  AAB000001471    Q2
            AAB000001513    Q1
            AAB000002057    Q2
            AAB000002164    Q2
            AAB000003162    Q2
2020-12-31  AAB000001471    Q1
            AAB000001513    Q1
            AAB000002057    Q1
            AAB000002164    Q1
            AAB000003162    Q2
Name: Actif_net_part, dtype: object

ddd = (ranking.reset_index(level=1)
              .groupby('type', group_keys=False)
              .apply(lambda x: x.asfreq('d', method='ffill'))
              .set_index('type', append=True)
              .sort_index())
print (ddd)
                        Actif_net_part
Date       type                       
2009-12-31 AAB000001471             Q2
           AAB000001513             Q1
           AAB000002057             Q2
           AAB000002164             Q2
           AAB000003162             Q2
...                                ...
2020-12-31 AAB000001471             Q1
           AAB000001513             Q1
           AAB000002057             Q1
           AAB000002164             Q1
           AAB000003162             Q2

[20095 rows x 1 columns]
于 2020-10-22T11:13:44.973 回答