我在论坛中没有找到对我有帮助的解决方案。我有一个很大的运输数据框架。我的数据帧的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']]