Конвертировать dask в pandas датафрейм - PullRequest
0 голосов
/ 15 апреля 2020

У меня довольно похожий вопрос: Dask read_csv-- Несоответствующие dtypes найдены в `pd.read_csv` /` pd.read_table`

Я запускаю следующий скрипт :

import pandas as pd
import dask.dataframe as dd
df2 = dd.read_csv("Path/*.csv", sep='\t', encoding='unicode_escape', sample=2500000)
df2 = df2.loc[~df2['Type'].isin(['STVKT','STKKT', 'STVK', 'STKK', 'STKET', 'STVET', 'STK', 'STKVT', 'STVVT', 'STV', 'STVZT', 'STVV', 'STKV', 'STVAT', 'STKAT', 'STKZT', 'STKAO', 'STKZE', 'STVAO', 'STVZE', 'STVT', 'STVNT'])]
df2 = df.compute()

И я получаю следующую ошибку: ValueError: Несоответствующие dtypes найдены в pd.read_csv / pd.read_table.

Как мне избежать этого? У меня более 32 столбцов, поэтому я не могу настроить dtypes заранее. В качестве подсказки также написано: Укажите опцию dtype при импорте или установите low_memory = False

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Когда Dask загружает ваш CSV, он пытается извлечь dtypes из заголовка файла, а затем предполагает, что остальные части файлов имеют одинаковые dtypes для каждого столбца. Типы Sine pandas из csv зависят от видимого набора значений, отсюда и ошибка.

Чтобы исправить, нужно либо явно указать dask, какие типы ожидать, либо увеличить размер часть dask пытается угадать типы из (sample=).

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

0 голосов
/ 15 апреля 2020

Может быть попробовать это:

df = pd.DataFrame()
df = df2.compute()
...