У меня есть фрейм данных d
с примерно 100,000,000
строками и 3
столбцами.Это выглядит примерно так:
import pandas as pd
In [17]: d = pd.DataFrame({'id': ['a', 'b', 'c', 'd', 'e'], 'val': [1, 2, 3, 4, 5], 'n': [34, 22, 95, 86, 44]})
In [18]: d.set_index(['id', 'val'], inplace = True)
У меня есть другой фрейм данных со значениями id
и val
, который я хочу сохранить в d
.Есть около 600 000 комбинаций id
и val
, которые я хочу сохранить:
In [20]: keep = pd.DataFrame({'id':['a', 'b'], 'val' : [1, 2]})
Я пробовал это следующим образом:
In [21]: keep.set_index(['id', 'val'], inplace = True)
In [22]: d.loc[d.index.isin(keep.index), :]
Out [22]:
n
id val
a 1 34
b 2 22
Это работает, но кажетсянеуклюжий и очень медленный.Есть ли лучший подход здесь?Какой самый быстрый способ нарезать на Multindex в пандах?