Pandas: Как отслеживать индексы для совпадающих записей данных между двумя кадрами данных? - PullRequest
0 голосов
/ 17 декабря 2018

Я все еще новичок в Пандах.

Я пытаюсь кэшировать индексы совпадающих записей данных между двумя фреймами данных Pandas в в форме словаря Python для получения дополнительной информации.более эффективные по времени вычисления и поиск хэшей позже.

Например, у меня есть два отношения фрейма данных.

R1:                     R2:

A        B              B        C
1        2              2        18
2        2              5        18
3        6              6        26
4        7              6        31
                        7        32

Столбец B является общим атрибутом между R1 и R2.Я хотел бы создать словарь, который сопоставляет каждое значение в R1 с индексами соответствующих записей данных в R2.

например, желаемый вывод

{2: [0],        (2 from R1[B] matches with the 0th entry in R2)
 6: [2,3]       (6 from R1[B] matches with the 2nd and 3rd entry in R2)
 7: [4]}        (7 from R1[B] matches with the 4th entry in R2)

Есть ли эффективный способтот?Неважно, будут ли значения в R1 [B], у которых нет соответствия в R2, отображаться как элемент с пустым списком в качестве значения в выходном словаре или пропускаются вообще.

Спасибо!

1 Ответ

0 голосов
/ 17 декабря 2018

Используя reset_index и groupby со столбцами R2, чтобы получить list из index, затем выполните цепочку с .loc

R2.reset_index().groupby('B')['index'].apply(list).loc[R1.B.unique()]# if you need dict , adding to_dict() at the end 
B
2       [0]
6    [2, 3]
7       [4]
Name: index, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...