繁体   English   中英

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

[英]Create NaN rows in pandas dataframe by aligning Dates

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

20181 月 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

谢谢

您想使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM