Создайте строки NaN в кадре данных панд, выровняв даты - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть датафрейм pandas, как показано во вложении.Он содержит цены на разные даты для 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

Уведомление о 31 января 2018 - обратите внимание, что только BondID AAA имеет цену.В BondID BBB отсутствует цена.

Как мне написать эффективный код для: -

1) выравнивания дат, т.е. если получить уникальные даты

2), тосоздать NaN-записи в столбцах «mid_ZSpread» и «total_rank» (как показано ниже)

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 голосов
/ 08 февраля 2019

Вы хотите использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...