Как я могу найти пересекающиеся рамки данных в пандах? - PullRequest
0 голосов
/ 11 марта 2019

У меня есть два кадра данных, как это. Но столбец ноль является ndarray.Я хочу найти пересекающиеся данные.

a1 =

 0                   |  1
 [39]                |  6000000
 [49] [50] [51] [52] |  84100 
 [49]                |  95400
 [20]                |  65089

a2 =

 0                   |  1
 [49] [50] [51] [52] |  84100 
 [38] [50]           |  530400
 [52]                |  60611
 [20]                |  65089

ожидаемый результат:

a3 =

 0                   |  1
 [49] [50] [51] [52] |  84100 
 [20]                |  65089

Любые идеибудет оценено.

1 Ответ

1 голос
/ 11 марта 2019

Вы можете просто создать булеву маску для сравнения, используя метод numpy.array.all :

a1 = pd.DataFrame({'a':[[0], [0,1,2], [3], [4]], 
                    'b':[0, 1000, 2000, 3000]})
a2 = pd.DataFrame({'a':[[0], [0,1,2], [4], [6]], 
                    'b':[0, 1000, 88000, 6000]})

a3 = a1[(a1==a2).values.all(axis=1)]

, который возвращает:

     a            b
0      [0]        0
1   [0, 1, 2]   1000
...