Отображение Dataframe в другой, используя условные выражения - PullRequest
2 голосов
/ 11 апреля 2020

Я хотел бы отобразить один фрейм данных в другой, хотя это не так просто, потому что я использую 2 условия для выполнения отображения - я объясню их ниже. По сути, я пытаюсь сделать два кадра данных, df1 и df2, так что:

df1:

A       B        Type
Heart   Spades   Boo
Heart   Clubs    Fog
Spades  Diamonds Bler

df2:

A       B        Boo    Fog     Bler
Heart   Spades   True   True    True
Spades  Diamonds True   False   True
Heart   Spades   True   True    False

Я мог бы отобразить значения, содержащиеся в столбцах «Boo», «Fog», «Bler», в новый столбец в df1 под названием «Verification», в результате чего:

A       B           Type    Verification
Heart   Spades      Boo     True
Heart   Clubs       Fog 
Spades  Diamonds    Bler    True

Затем для выполнения этого процесса у меня есть 2 условия которые должны быть заполнены: значения в df1 и значения в df2 для столбцов A и B должны быть равными - так как они действовали как ключи, и отображение должно принимать значения в некотором столбце df2 на основе значения в тип df1. У меня две трудности:

  1. Для отображения требуется два столбца, поэтому я не могу найти способ использования pandas .series.map; Более того, я не смог применить Dataframe.loc [условие] в этом контексте, чтобы условия сравнивали df1 и df2.
  2. Пример выше довольно короткий, но набор данных, над которым я работаю, имеет несколько комбинаций из значений A и B, следовательно, неразумно писать функцию ассоциации между A, B и значением для каждого типа.

Есть ли у вас какие-либо предложения?

1 Ответ

2 голосов
/ 11 апреля 2020

Попробуйте melt и drop_duplicates на df2. Наконец, осталось merge df1 до результата melt и drop_duplicates

df_final = (df1.merge(df2.melt(['A','B'], var_name='Type', value_name='Verification')
                         .drop_duplicates(['A','B','Type']), how='left'))

Out[240]:
        A         B  Type Verification
0   Heart    Spades   Boo         True
1   Heart     Clubs   Fog          NaN
2  Spades  Diamonds  Bler         True

Примечание : включено df2, значение bler для Spades Diamonds (2-й ряд) равен True, поэтому его Verification равно True на выходе

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