逐行对数据帧的新列中的数组元素进行计数



我在论坛中没有找到对我有帮助的解决方案。我有一个很大的运输数据框架。我的数据帧的33列中有一列是一个数组,其中包括(此行的(解决方案的允许标签。

所以列是:

usedLabels
[db_fv, blablacar, flixbus]
[db_fv, blablacar, flixbus]
[db_fv, blablacar, flixbus, airplane]
[db_fv, blablacar]

我想添加一列,对每行每个数组的条目进行计数:

usedLabelsCount
3
3
4
2

这就是我迄今为止所尝试的:

size = 1
for dim in df['usedLabels']: size *= dim

df['usedLabelsCount'] = df.set_index(['usedLabels']).count(level="usedLabels")
df['usedLabelsCount'] = len(df['usedLabels'])
df['usedLabelsCount'] = df['usedLabels'].count

我对.count的结果是:

<bound method Series.count of 0 [db_fv...>

使用CCD_ 2,我得到所有行的计数(而不是每行的计数(。因此,所用LabelsCount的每一行都将包含903829(这是总计数,而不是每行(

谢谢!

编辑:建议的解决方案(见下文(不太奏效:

df['UsedLabelsCount']=[len(i) for i in df['usedLabels']]

我试过了,但现在已经是27了。这是标签的整体唯一值(而不是每行(。我不知道为什么。。我也试过这个:

for index, row in df.iterrows(): a = (len(i) for i in df['usedLabels']) df['usedLabelsCount']= a 

但这会将该错误打印到数据帧中(代码运行(:<generator object <genexpr> at 0x7f9566666c80>有什么想法吗?

编辑2:这是一些样本数据:

https://github.com/Hektor1997/sample-data.git

try:

df['UsedLabelsCount']=[len(i) for i in df['usedLabels']]

最新更新