как выбрать строки из dataframe по сравнению с hashmap - PullRequest
0 голосов
/ 23 января 2019

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

df1

      id         slt     sln       elt      eln        start      end 

enter image description here

df2

     id           evt         slt    sln     speed     detector

enter image description here

Hashmap

Map(351608084643945 -> List(1544497916,1544497916), 351608084643944 -> List(1544498103,1544498093))

Я хочу сравнить значения в списке, и, если два значения в списке совпадают, я хочу получить полную строку из кадра данных (df1) этого идентификатора. иначе, полная строка из df2 этого идентификатора.

И кадры данных, и карты будут иметь разные и уникальные идентификаторы.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Два шага:

  1. Шаг первый: разбить хеш-карту на две хеш-карты, одна из которых - совпавшая, другая - не совпавшая.
  2. Шаг второй: Используйте совпавшую хэш-карту для соединения с df1 по id, тогда вы получите совпавший df1. И используйте непревзойденный hashmap для соединения с df2 по id, тогда вы получите непревзойденный df2.
0 голосов
/ 23 января 2019

Если я правильно понимаю, вы хотите просмотреть свою хэш-карту, и для ввода вы хотите проверить, все ли значения в списке являются одинаковыми. Если в списке есть тот же элемент, для которого вы хотите получить данные из df1, то из df2. Если это то, что вы хотите, то ниже приведен код для того же.

hashMap.foreach(x => {
        var key = x._1.toString
        var valueElements = x._2.toList
        if (valueElements.forall(_ == valueElements.head)) {
          df1.filter($"id".equalTo(key))
        } else {
          df2.filter($"id".equalTo(key))
        }
      })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...