Есть ли какая-либо функция, доступная в Danfo.js похож на панду исин()

#node.js #pandas #danfojs

#node.js #pandas #danfojs

Вопрос:

Я работаю над обширной обработкой данных в nodejs. Я нашел danfojs как хорошую альтернативу python Pandas. Но сталкивается с некоторыми недостатками функциональности по сравнению с Pandas.

Как разработать функциональность pandas isin() в Danfojs?

Пример:

У меня есть приведенный ниже фрейм данных:

ID Имя адрес
asefwc Абдулла Cumilla
wefcss Хайрул Jashore
erfegf Jaman Магура
ytttte Наджрул Nowga
edqfgh Latif Чаттаграмма
yutydg Маджхар Раджшахи

И приведенная ниже серия:

ID
wefcss
ytttte
yutydg

Я хочу получить те строки фрейма данных, идентификатор которых существует в серии

Ответ №1:

Я не думаю, что существует эквивалент pandas ‘isin’, но я нашел обходной путь для решения этой проблемы

 const dfd = require("danfojs-node")
const data = [
    ['asefwc', 'Abdullah', 'Cumilla'],
    ['wefcss', 'Khairul', 'Jashore'],
    ['erfegf',  'Jaman', 'Magura']
]

const columns = ['id', 'name', 'address']

let df = new dfd.DataFrame(data, { columns })

let ids = df['id'].values // get all the column values

let allRowsToInclude = []

// idsToInclude is your Series
idsToInclude.forEach((idToInclude) => {
  const rowsToInclude = ids.flatMap((id, idx) => id === idToInclude ? idx : [])
  allRowsToInclude = allRowsToInclude.push(... rowsToInclude)
}

// creates a new df with filtered rows
let dfFinal = df.loc({rows: allRowsToInclude}) 
 

Ответ №2:

Я думаю, что стоит изучить dfd.DataFrame.merge, dfd.DataFrame.merge, по сути, выбирая конкретный вариант соединения, вы фильтруете данные определенным образом.