Назначить колонку коал из Numpy Result - PullRequest
1 голос
/ 10 октября 2019

Попытка повторить функциональность панд в Databricks-Koalas В Pandas:

df = pd.DataFrame({'a': [450, 1, 26],
                   'b': [1, 450, 70],
                  })
thresh = [x for x in range(26)] # create a list 1 to 25
df["c"] = np.where((df.a.isin(thresh) | df.b.isin(thresh)), 1, 0) # find the values within the threshold and flag column 'c'
df
# returns
Out[32]: 
     a    b  c
0  450    1  1
1    1  450  1
2   26   70  0

В Koalas:

df = ks.DataFrame({'a': [450, 1, 26],
                   'b': [1, 450, 70],
                  })

thresh = [x for x in range(26)] # create a list 1 to 25
df = df.assign(c=np.where((df.a.isin(thresh) | df.b.isin(thresh)), 1, 0)) # find the values within the threshold and flag column 'c'
# returns
PandasNotImplementedError: The method `pd.Series.__iter__()` is not implemented. If you want to collect your data as an NumPy array, use 'to_numpy()' instead.

Как правильно использовать to_numpy, как он ожидает или обернутьрезультат Numpy в ks.Series (), так что assign () примет результат?

df = df.assign(c=ks.Series(np.where((df.a.isin(thresh) | df.b.isin(thresh)), 1, 0))) выдает ту же ошибку, что и выше.

Есть ли способ реплицироватьфункциональность панд в коалах?

1 Ответ

1 голос
/ 10 октября 2019

Для выполнения операции, которую вы здесь выполняете в ks.DataFrame, вам не нужно np.where, но вы можете использовать astype:

df = df.assign(c= (df.a.isin(thresh) | df.b.isin(thresh)).astype(int) )
df
     a    b  c
0  450    1  1
1    1  450  1
2   26   70  0
...