Получение 'TypeError: только массивы размера 1 могут быть преобразованы в Python скаляры' при сохранении значений RGB в пустом массиве - PullRequest
0 голосов
/ 04 августа 2020

У меня есть фрейм данных в Pandas, как показано ниже, где col2 представляет значения rgb

    col1    col2
0   abc     0, 153, 0
1   def     0, 153, 0
2   ghi     0, 102, 255
3   jkl     255, 0, 0

Repro:

data = {'col1':  ['abc', 'def','ghi','jkl'],
        'col2': ['0, 153, 0', '0, 153, 0', '0, 102, 255','255, 0, 0']
        }

df = pd.DataFrame (data, columns = ['col1','col2'])

Я хотел бы вызвать различные значения цвета позже , поэтому я затем пытаюсь сохранить их следующим образом:

colors = []
colors.append(float(data.colour.unique()))

Однако это дает ошибку:

TypeError: только массивы размера 1 могут быть преобразованы в Python скаляры

Если я напечатаю инструкцию, я получу:

print((data.col2.unique()))
['0, 153, 0' '0, 102, 255' '255, 0, 0']

Но, чтобы избежать ошибки, я думаю, мне действительно нужен следующий результат:

[(0, 153, 0), (0, 102, 255), (255, 0, 0)]

Как я могу этого добиться?

1 Ответ

0 голосов
/ 04 августа 2020

Можно сделать str.split

l = df.col2.str.split(', ').map(tuple).unique()
Out[17]: 
array([('0', '153', '0'), ('0', '102', '255'), ('255', '0', '0')],
      dtype=object)
...