SparkPandasNotImplementedError: .ilo c требуется числовой c фрагмент или условный логический индекс - PullRequest
0 голосов
/ 21 января 2020

Я получаю следующее сообщение об ошибке на блоках данных:

SparkPandasNotImplementedError: .ilo c требуется числовой c срез или условный логический индекс, полученный Вы пытаетесь использовать функцию pandas. iloc [..., ...], используйте функцию выбора искры, где

это мой код:

import re 
import nltk
import heapq
corpus = []
for i in range(0, len(Y)):
    describe = re.sub('[^a-zA-Z]', ' ', Y.iloc[i, 0])
    describe = describe.lower()
    describe = describe.split()
    describe = ' '.join(describe)
    corpus.append(describe)

Код отлично работает в Spyder, но не в databricks.

1 Ответ

1 голос
/ 21 января 2020

Я попытался воспроизвести ту же проблему, что и ваша, успешно, как код и рисунок ниже.

import numpy as np
import pandas as pd
import databricks.koalas as ks
dates = pd.date_range('20130101', periods=6)
pdf = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
df = ks.from_pandas(pdf)
print(pdf.iloc[0,0])
print(df.iloc[0,0])

enter image description here

Из-за отсутствия необходимое описание вашей переменной Y, я думаю, Y - это фрейм данных, но различия составляют pandas фрейм данных на локальном Spyder, Koalas фрейм данных в блоках данных.

Согласно к документу Koalas для databricks.koalas.DataFrame.iloc, он не поддерживает операцию iloc(int, int) для кадра данных Koalas.

enter image description here

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

  1. Убедитесь, что Y является pandas фреймом данных в том же скрипте из ваших блоков данных.
  2. Y должен быть кадром данных Koalas, как вы хотите, пожалуйста, попробуйте код, как показано ниже.

    # Here, `Y` is a Koalas dataframe
    for row in Y.iterrows():
        describe = re.sub('[^a-zA-Z]', ' ', row[1][0])
        describe = describe.lower()
        describe = describe.split()
        describe = ' '.join(describe)
        corpus.append(describe)
    

    Как вы можете видеть мой пример кода и В результате ниже функция iterrows может помочь получить значение первого столбца каждой строки.

    enter image description here

...