我使用pymongo API从MongoDB数据库中提取数据并将其插入到pandas数据帧中。数据库中的某些字段包含诊断代码列表。其中大多数伴随着"计数"领域,但一个没有。对于我计划定期对此数据执行的分析,此计数非常重要。数据框" DF"看起来像这样:
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旅程已经走了很长一段路,但是这一次让我在多天的时间里撞到了墙上几个小时。在此先感谢您的帮助!
答案 0 :(得分:2)
列表理解应该在这里工作:
>>> df['dxCount'] = [len(c) for c in df['dxCodes']]
虽然更好的设计可能是将dxCodes
保存在由memberID
索引的单独数据框中,以便将它们存储为同源字符串列。