#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, по сути, выбирая конкретный вариант соединения, вы фильтруете данные определенным образом.