我有一个熊猫数据框,如附件所示。它包含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
谢谢
答案 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