Каков наилучший способ разбить огромные CSV на основе условия? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть 10 файлов CSV, каждый из которых составляет около 40-60 ГБ.Я хотел узнать наиболее эффективный способ без использования Spark / Hadoop, чтобы сделать что-то вроде нарезки CSV на основе условия и сохранить их как CSV.

Например, рассмотрим таблицу Machine_Details + -------------- + -------- + -------- +

|Machine_Name |Значение1 |Value2 |

+ -------------- + -------- + -------- +

|1203 |0,11 |0,22 |

|1203 |0,21 |0,23 |

|1205 |0,21 |0,45 |

+ -------------- + -------- + -------- +

Что янеобходимо, чтобы все строки, связанные с именем машины 1203, были помещены в один CSV, и аналогично все строки с именем машины 1205 должны быть помещены в другой файл CSV

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Я бы посмотрел на AWK (см., Например, https://www.geeksforgeeks.org/awk-command-unixlinux-examples/), который является стандартной утилитой во многих дистрибутивах Linux.С сайта, на который я ссылаюсь:

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

0 голосов
/ 20 сентября 2019

Я не знаю о наиболее эффективных, но если бы мне нужно было сделать что-то подобное, я мог бы использовать Панд.1. Я бы конвертировал каждый CSV в фрейм данных.2. в каждом кадре данных я бы создал список уникальных значений для вашего столбца.3. затем используйте логическую переменную для фильтрации каждого CSV по отношению к вашему списку уникальных значений.4. после фильтрации каждого кадра данных вы можете преобразовать каждый в свой собственный файл CSV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...