通过对齐日期在熊猫数据框中创建NaN行

时间:2019-02-08 08:50:05

标签: python pandas dataframe

我有一个熊猫数据框,如附件所示。它包含2个唯一BondID在不同日期的价格,如下所示:-

Quote_Date     BondID     mid_ZSpread    rank
----------     ------     -----------    -----
28-12-2018     AAA        90.9           1
28-12-2018     BBB        30.9           2
31-12-2018     AAA        91.9           1
02-01-2019     AAA        92.9           1
02-01-2019     BBB        31.9           2

关于 2018年1月31日的通知-请注意,只有BondID AAA才有价格。 BondID BBB缺少价格。

如何编写高效的代码至:-

1)对齐日期,即是否获得唯一的日期

2)然后在“ mid_ZSpread”和“ overall_rank”列中创建NaN条目(如下所示)

Quote_Date     BondID     mid_ZSpread    rank
----------     ------     -----------    -----
28-12-2018     AAA        90.9           1
28-12-2018     BBB        30.9           2
31-12-2018     AAA        91.9           1
31-12-2018     BBB        NaN            NaN
02-01-2019     AAA        92.9           1
02-01-2019     BBB        31.9           2

谢谢

1 个答案:

答案 0 :(得分:1)

您要使用reindex,为此,您需要首先创建一个MultiIndex,其中QuoteDate和BondID的所有组合都出现在from_product中。如果您随后set_index,则可以重新索引,Pandas会自动为NaN提供未知值。

mi = pd.MultiIndex.from_product([df['Quote_Date'].unique(), df['BondID'].unique()])

df.set_index(['Quote_Date', 'BondID']).reindex(mi)
#                    mid_ZSpread  rank
#28-12-2018 AAA         90.9   1.0
#           BBB         30.9   2.0
#31-12-2018 AAA         91.9   1.0
#           BBB          NaN   NaN
#02-01-2019 AAA         92.9   1.0
#           BBB         31.9   2.0