Я пытаюсь найти в фрейме данных Python элементы в наборе, где каждый элемент в фрейме данных содержит набор или NaN.
codes
- это набор, который выглядит так:
{8.5,
8.7,
10.0,
8.0,
8.52,
...
31.1}
Я буду перебирать каждый элемент в codes
и хочу вернуть строки в кадре данных, которые содержат каждый элемент.
Информационный кадр содержит ок. 800 столбцов и 500 000 строк.
Каждый элемент кадра данных является набором, например, {859,0, 10,0} или NaN
Как искать в кадре данных каждый из кодов в codes
?
Первоначально у меня был массив данных, содержащий массивы вместо наборов. С этим я мог бы сделать dataframe.isin(codes)
, который вернул фрейм данных всего False. isin
работает быстро, и я пробовал его для каждого столбца кадра данных, но кажется, что он не может прочитать внутри массива и поэтому возвращает False при попытке сопоставления.
Я пытался:
for column in dataframe.columns:
dataframe[column].apply(pd.Series)
, чтобы разбить массив на отдельные столбцы, а затем выполните isin
, чтобы найти codes
. Это работало, но было очень медленно (потребовались дни, чтобы запустить часть pd.Series).
Теперь я использую наборы вместо массивов, потому что он удаляет повторяющиеся значения.