Python向Dataframe添加列,该列是另一列中列表元素的计数
我正在使用PymongoAPI从MongoDB数据库中提取数据,并将其插入到pandas数据帧中。数据库中的某些字段包含诊断代码列表。其中大多数都有一个附带的“计数”字段,但有一个没有。对于我计划定期对这些数据进行的分析来说,这一点非常重要。数据帧“DF”如下所示:Python向Dataframe添加列,该列是另一列中列表元素的计数,python,list,pandas,count,dataframe,Python,List,Pandas,Count,Dataframe,我正在使用PymongoAPI从MongoDB数据库中提取数据,并将其插入到pandas数据帧中。数据库中的某些字段包含诊断代码列表。其中大多数都有一个附带的“计数”字段,但有一个没有。对于我计划定期对这些数据进行的分析来说,这一点非常重要。数据帧“DF”如下所示: dxCodes memberID newDx 0 [4280, 4293, 4241, 4240, 4242, 4243] 8
dxCodes memberID newDx
0 [4280, 4293, 4241, 4240, 4242, 4243] 856589080 0
1 [V7612] 906903383 0
2 [4550, 4553, V1582] 837210554 0
3 [78791, 28860, V1582, 496, 25000, 4019] 935634391 0
4 [30500, 42731, 4280, 496, 59972, 4019, 3051] 929185103 0
我需要在中创建一个新列,其中包含诊断代码字段中包含的诊断代码计数。我已经上网了,但是我尝试过的解决方案没有一个是成功的。我得到的最接近的是这个
DF['dxCount'] = len(DF['dxCodes'])
然而,我得到了这个结果
dxCodes memberID newDx dxCount
0 [4280, 4293, 4241, 4240, 4242, 4243] 856589080 0 139360
1 [V7612] 906903383 0 139360
2 [4550, 4553, V1582] 837210554 0 139360
3 [78791, 28860, V1582, 496, 25000, 4019] 935634391 0 139360
4 [30500, 42731, 4280, 496, 59972, 4019, 3051] 929185103 0 139360
dxCount列中显示的数字是数据帧中的行数,但我希望它显示dxCodes字段中的dx代码数,因此期望的结果如下
dxCodes memberID newDx dxCount
0 [4280, 4293, 4241, 4240, 4242, 4243] 856589080 0 6
1 [V7612] 906903383 0 1
2 [4550, 4553, V1582] 837210554 0 3
3 [78791, 28860, V1582, 496, 25000, 4019] 935634391 0 6
4 [30500, 42731, 4280, 496, 59972, 4019, 3051] 929185103 0 7
我在Python之旅中走了很长一段路,但这一次让我在好几天的时间里把头撞在墙上好几个小时。提前感谢您的帮助 列表理解应该在这里起作用:
>>> df['dxCount'] = [len(c) for c in df['dxCodes']]
虽然更好的设计可能是将
dxcode
保存在一个单独的数据帧中,由memberID
索引,以便它们可以存储为一个同质的字符串列。这正是我所需要的。这是一个关于将DXCODE保存在单独数据帧中的好建议,在大多数情况下,在执行实际分析时,我只需要计数。非常感谢!