Pyspark: Создание двоичного фрейма данных (например, матрицы терминов документа) из файла csv

#python #pandas #dataframe #pyspark

Вопрос:

Я новичок в pyspark, и у меня есть следующая проблема: у меня есть csv-файл, который содержит информацию о разных компаниях, в которых в разных местах у этих компаний есть большие сайты. Структура csv в основном

Компания А, Лондон, Мюнхен

Компания B, Детройт, Остин, Нью-Йорк

Так что вполне возможно, что люди занимаются разным количеством видов спорта. Моя цель теперь состоит в том, чтобы прочитать файл таким образом, чтобы в результате я получил кадр данных pyspark с людьми в виде строки и всеми видами спорта в виде столбцов, чтобы разные записи были двоичными с 0, если человек в строке не занимается спортом в столбце, и наоборот 1, если они это делают. Как это:

Лондон Berlin Детройт Остин Нью-Йорк
A 1 1 0 0 0
B 0 0 1 1 1

Каков наиболее эффективный способ сделать это? Нужно ли мне сначала прочитать csv-файл и создать новый фрейм данных? Я подумал о том, чтобы создать новую колонку, содержащую одну строку всех видов спорта (например, «Лондон», «Берлин»), а затем использовать метод, аналогичный этому блогу. Однако это приводит к проблемам с такими местами, как Нью-Йорк и Лос-Анджелес, это два слова, но я хочу, чтобы они были одним целым. Может быть, есть быстрый способ создания словаря и создания фрейма данных из словаря. Причина, по которой мне это нужно эффективно, заключается в том, что у меня 10 миллионов компаний и примерно 1 миллион мест.

Заранее спасибо.