У меня есть столбец под названием '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)