Big*_*ist 2 python list count dataframe pandas
我正在使用 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
Run Code Online (Sandbox Code Playgroud)
我需要在其中创建一个新列,其中包含诊断代码字段中包含的诊断代码的计数。我查遍了互联网,但尝试过的解决方案都没有成功。我得到的最接近的是这个
DF['dxCount'] = len(DF['dxCodes'])
Run Code Online (Sandbox Code Playgroud)
但是,我得到了这个结果
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我在 Python 之旅中已经走了很长一段路,但这一次让我连续几天连续几个小时用头撞墙。提前感谢你的帮助!
列表理解应该在这里工作:
>>> df['dxCount'] = [len(c) for c in df['dxCodes']]
Run Code Online (Sandbox Code Playgroud)
尽管更好的设计可能是将 保留dxCodes在单独的数据帧中,并按 进行索引memberID,以便它们可以存储为同质字符串列。
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |