Сглаживание типа списка в столбце данных приводит к тому, что объект float не повторяется. Ошибка типа - PullRequest
0 голосов
/ 19 марта 2020

У меня есть столбец под названием 'player_traits', который состоит из списков, и я хочу найти количество элементов, используя Counter. Я нашел способ сгладить списки и сосчитать их, но когда я пытаюсь сгладить его, я получаю TypeError: 'float' object is not iterable.

Я проверил тип () экземпляра столбца и проверили, что они являются списками, поэтому я не уверен, почему возникает ошибка, в результате которой объекты с плавающей точкой не повторяются.

Вот пример столбца:

df [' player_traits ']:

0        [Finesse Shot,  Speed Dribbler,  One Club Play]
1          [Diver,  Beat Offside Trap,  Selfish,  Flair]
2                   [Diver,  Flair,  Technical Dribbler]

А вот мой код (в моем блокноте Jupyter), который выдает ошибку:

trait_series = df['player_traits']
flat_list = pd.Series([item for sublist in trait_series for item in sublist])
Counter(flat_list)

Я также проверил, чтобы убедиться, что trait_series это тоже серия, и это так. Что не так? Есть ли другой способ сгладить списки и сосчитать элементы?

Редактировать: У меня возникли проблемы с обновлением Python версии. Есть ли способ сгладить список без использования .explode ()?

РЕШЕНО: вместо использования .explode () я нашел некоторый код, который будет работать для сглаживания списков, отфильтровывая нули:

non_nan_df = df[df['player_traits'].isnull() == False]

player_traits = np.array([item for lst in
non_nan_df['player_traits'].values for item in lst])

Counter(player_traits)
...