Удалите ненужные столбцы из файла CSV, используя Papaparse - PullRequest
0 голосов
/ 27 января 2019

У меня есть ситуация, когда пользователь может загрузить CSV-файл. Этот файл CSV содержит много данных, но меня интересуют только 2 столбца (ID и дата). В данный момент я анализирую CSV, используя Papaparse

Papa.parse(ev.data, {
    delimiter: "",
    newline: "",
    quoteChar: '"',
    header: true,
    error: function(err, file, inputElem, reason) { },
    complete: function (results) {
        this.parsed_csv = results.data;

    }
});

При запуске this.parsed_csv представляет объекты данных, введенные по имени поля. Так что, если я JSON.stringify вывод что-то вроде этого

[
  {
    "ID": 123456,
    "Date": "2012-01-01",
    "Irrelevant_Column_1": 123,
    "Irrelevant_Column_2": 234,
    "Irrelevant_Column_3": 345,
    "Irrelevant_Column_4": 456
  },
  ...
]

Итак, мой главный вопрос: как я могу избавиться от ненужных мне столбцов и просто создать новый csv, содержащий идентификатор и дату столбца?

Спасибо

Одна вещь, которую я понял, есть способ добавить динамические переменные. Например, я позволяю пользователям выбирать столбцы, которые я хочу отобразить. Теперь мне нужно сделать что-то вроде этого

let ID = this.selectedIdCol;
this.parsed_csv = results.data.map(element => ({ID: element.ID, Date: element.Date}));

Это говорит о том, что ID не используется, однако. Спасибо

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Обратите внимание, что если вы загружаете огромный файл, у вас будет весь файл в памяти сразу после разбора.Кроме того, он может заморозить браузер из-за большой нагрузки.Вы можете избежать этого, читая и отбрасывая столбцы:

  • строка за строкой
  • порция за порцией.

Вы должны прочитать FAQ Papaparse до реализации этого.Подводя итог, вы будете хранить необходимые столбцы, извлекая их из обратных вызовов step или chunk.

0 голосов
/ 27 января 2019
let data = [
  {
    "ID": 123456,
    "Date": "2012-01-01",
    "Irrelevant_Column_1": 123,
    "Irrelevant_Column_2": 234,
    "Irrelevant_Column_3": 345,
    "Irrelevant_Column_4": 456
  },
  ...
]

просто получить результаты, используя следующий код:

data = data.map(element => ({ID: element.ID, Date: element.Date}))

Теперь у вас есть нужный столбец, сгенерируйте новый CSV для этих столбцов

...