#python #pandas #dataframe #tensorflow #keras
#python #pandas #фрейм данных #тензорный поток #keras
Вопрос:
У меня есть массив в pandas dtype ‘object’, этот массив содержит только целые числа, но я не могу преобразовать его в int32 или любой другой тип данных, совместимый с Keras, из-за ошибки:
ValueError: setting an array element with a sequence.
при использовании следующего кода:
df['label'].astype('int64')
Это столбец:
0 [90, 90, 100, 80, 80]
1 [90, 90, 100, 80, 80]
2 [90, 100, 100, 100, 80]
3 [70, 70, 90, 70, 70]
4 [90, 90, 100, 90, 90]
...
169 [80, 80, 80, 80, 70]
170 [80, 90, 80, 80, 80]
171 [80, 90, 80, 80, 80]
172 [70, 80, 70, 70, 70]
173 [70, 80, 70, 70, 70]
Name: label, Length: 174, dtype: object
Как я могу преобразовать его в dtype Int?
Комментарии:
1. Столбец содержит списки в виде объектов. Вы пытаетесь преобразовать список в int, который выдаст ошибку
2. я прочитал это в документации, pandas.pydata.org/pandas-docs/stable/reference/api /…
3. Нет, вы этого не сделали. Вы не можете преобразовать столбец, содержащий списки, в целочисленный тип данных. Вся установка также указывает на проблему дизайна. Почему у вас нет отдельных столбцов для элементов в списке?
4. Весь столбец предназначен для списков, но мне нужно, чтобы они были ind списка, совместимого с tensorflow, списком целых чисел, а не строк
5. Это список целых чисел; в противном случае были бы кавычки
Ответ №1:
У вас не может быть dtype массива в pandas.
Однако есть несколько альтернатив, если ваша конечная цель — передать фрейм данных в модель keras, вы могли бы использовать что-то вроде этого:
import pandas as pd
import numpy as np
s = pd.Series([[1,2,3]] * 5)
df = pd.DataFrame(s.to_list(), dtype='int64')
Это быстро и легко понять.
Тогда вы могли бы использовать
df.to_numpy()
для создания правильно сформированного массива входных данных для вашей модели. Если вы используете tensorflow, вы также можете использовать tf.data
module для достижения того же.
Задавайте мне любые дополнительные вопросы.
Приветствия!