После df.toPandas (). To_csv ('mycsv.csv') я читаю данные обратно, данные получаются странными - PullRequest
0 голосов
/ 01 октября 2018

У меня есть таблица с именем result_25.Я использую этот код для успешного экспорта данных в csv на моем диске.

result_25.toPandas().to_csv('mycsv.csv')

Чтобы проверить, правильно ли я сохраняю файл, я снова прочитал таблицу с этим кодом:

rr = spark.read.csv('mycsv.csv', inferSchema=True, header=True)

Я проверил данные, все выглядело нормально.

rr & result_25 набор данных

Но когда я проверил свой result_25 и rr с помощью .describe (). Show(), они показывают по-разному (я ожидал, что они были одинаковыми).

result_25 и rr description ()

И когда я сгруппировал по «предсказанию», онибыли еще более разными.

р-р

result_25

Что здесь не так?Кто-нибудь может мне помочь?Спасибо !!!

1 Ответ

0 голосов
/ 01 октября 2018

По умолчанию pandas.to_csv добавляет индекс к экспорту CSV (из документов):

index : boolean,по умолчанию True
Запись имен строк (индекс)

Вы можете экспортировать в CSV без индекса:

result_25.toPandas().to_csv('mycsv.csv', index=False)

, и вы не увидите дополнительный столбец_c0 (имя столбца _c0 добавляется pyspark, поскольку pandas не дает никакого имени столбцу индекса).

Если вы используете только искру (и вам не нужен сохраненный фрейм данных в человеке-читаемый формат), другим способом избежать этого является запись / чтение фреймов данных pyspark в других форматах, таких как JSON или parquet :

# JSON
result_25.write.json('mydataframe.json')
rr = spark.read.json('mydataframe.json')

# parquet
result_25.write.parquet('mydataframe.parquet')
rr = spark.read.parquet('mydataframe.parquet')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...