Ошибка в использовании функции слияния для объединения информации из одного кадра данных в другой - PullRequest
0 голосов
/ 15 мая 2019

У меня есть два кадра данных.

Первый в этом формате, назовем это df

Date  Counterparty Amount
3/1   Bank A       $100
3/1   Bank B       $100 
3/1   Bank C       $100
...
3/30  Bank B       $100
3/30  Bank C       $150
3/30  Bank D       $300
3/30  Bank E       $250

Второй имеет рейтинговую информацию для каждого банка в этом формате. Давайте назовем это NRSRO

Date  Bank A   Bank B   Bank C   Bank D   Bank E   Bank F ....Bank Z
3/1   AA      ...
3/2   AA      ...
3/3   AA      ...

Я попробовал следующий код

NRSRO= pd.DataFrame(NRSRO.stack(), columns=['Rating']).reset_index()
NRSRO= NRSRO.rename(columns = {'level_1':'Counterparty'})

Это превращает информационный кадр NRSRO в:

Date  Counterparty Rating
3/1   Bank A       AA
3/2   Bank A       AA
...
3/30  Bank A       AA
3/1   Bank B       AAA
3/2   Bank B       AAA
...
...
3/30  Bank Z       AAA

Наконец, объединить данные с

result = pd.merge(df, NRSRO, how = 'left', on = ['Date', 'Counterparty'])

Я получаю смешанные результаты.

Когда я запускаю это, return is true.

result['Rating'].isnull().values.any()

Для некоторых банков данные рейтинга успешно добавлены к фрейму данных «результат», но для других он показывает NaN. Я уверен в целостности данных, нет пропущенных данных из источника.

Есть идеи, что здесь происходит?

1 Ответ

0 голосов
/ 15 мая 2019

Вы объединяетесь в два столбца с левым соединением, поэтому, если у кадра данных NRSRO нет рейтинга Банка А на определенную дату, и эта дата присутствует в df, он будет нулевым в кадре данных result. Чтобы проверить, происходит ли это, запустите

result = pd.merge(df, NRSRO, how = 'inner', on = ['Date', 'Counterparty'])

Если в этом фрейме данных все еще есть нулевые значения, то в вашем фрейме данных NRSRO могут быть некоторые нули, поэтому вам следует проверить это. Если это возвращает идеальный фрейм данных без нулей, то мои рассуждения верны о наличии некоторых пропущенных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...