ValueError: Столбцы в вычисляемых данных не соответствуют столбцам в предоставленных метаданных - PullRequest
0 голосов
/ 09 сентября 2018

Я работаю над набором данных с 5,5 миллионами строк в соревновании по борьбе. Чтение .csv и их обработка занимают часы в Pandas.

А вот и в сумерках. Даск быстрый, но со многими ошибками.

Это фрагмент кода,

#drop some columns
df = df.drop(['dropoff_latitude', 'dropoff_longitude','pickup_latitude', 'pickup_longitude', 'pickup_datetime' ], axis=1)


# In[ ]:


#one-hot-encode cat columns
df = dd.get_dummies(df.categorize())


# In[ ]:


#split train and test and export as csv
test_df = df[df['fare_amount'] == -9999]
train_df = df[df['fare_amount'] != -9999]

test_df.to_csv('df_test.csv')
train_df.to_csv('df_train.csv')

который при запуске линии;

test_df.to_csv('df_test.csv')
train_df.to_csv('df_train.csv')

выдает ошибку

ValueError: The columns in the computed data do not match the columns
in the provided metadata

Что может вызвать это и как я могу это остановить.

N.B First time using Dask.

1 Ответ

0 голосов
/ 11 сентября 2018

Строка документа описывает, как эта ситуация может возникнуть при чтении из CSV. Скорее всего, если бы вы сделали len(dd.read_csv(...)), вы бы видели это уже без дропа, манекенов и разбивки поезда. Сообщение об ошибке, вероятно, говорит вам, какие именно столбцы являются проблемой, и какой тип был ожидаемым в сравнении с найденным.

Что происходит, так это то, что dask угадывает dtypes фрейма данных из первого блока первого файла. Иногда это не отражает тип во всем наборе данных: например, если столбец не имеет значений в первом блоке, его тип будет float64, потому что pandas использует nan в качестве заполнителя NULL. В таких случаях вы хотите определить правильные dtypes и указать их для read_csv, используя ключевое слово dtype=. См. Документацию pandas для типичного использования dtype= и других аргументов для parsing.conversion данных, которые могут помочь во время загрузки.

...