数据帧列中的展平列表类型导致“float”对象不可编辑“类型错误”

2024-06-01 04:59:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为“player_traits”的列,它由列表组成,我希望能够使用Counter找到元素的计数。我找到了一种方法来flatten the lists并对它们进行计数,但当我试图将其展平时,我得到了一个TypeError: 'float' object is not iterable

我已经检查了列实例的type(),并验证了它们是列表,所以我不确定为什么会出现错误,说float对象不可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)

Tags: 方法in元素df列表forcounterfloat