小编Che*_*nis的帖子

没有 PANDAS 的 Python 聚合

我有一个排序和嵌套的列表。列表中的每个元素有3个子元素;'药物名称',Doctor_id,金额。对于给定的药物名称(重复),医生 ID 不同,数量也不同。请参阅下面的示例列表..

我需要一个输出,其中对于每个药物名称,我需要计算该药物的唯一医生 ID 总数和美元金额总和。例如,对于下面的列表片段..

[
   ['CIPROFLOXACIN HCL', 1801093968, 61.49],
   ['CIPROFLOXACIN HCL', 1588763981, 445.23],
   ['HYDROCODONE-ACETAMINOPHEN', 1801093968, 251.52],
   ['HYDROCODONE-ACETAMINOPHEN', 1588763981, 263.16],
   ['HYDROXYZINE HCL', 1952310666, 945.5],
   ['IBUPROFEN', 1801093968, 67.06],
   ['INVEGA SUSTENNA', 1952310666, 75345.68]
]
Run Code Online (Sandbox Code Playgroud)

所需的输出如下。

[
   ['CIPROFLOXACIN HCL', 2, 516.72],
   ['HYDROCODONE-ACETAMINOPHEN', 2, 514.68]
   ['HYDROXYZINE HCL', 1, 945.5]
   ['IBUPROFEN', 1, 67.06]
   ['INVEGA SUSTENNA', 1, 75345.68]
]
Run Code Online (Sandbox Code Playgroud)

在数据库世界中,这是最简单的事情,只需对药物名称进行简单的 GROUP BY 即可。在Python中,我不允许使用PANDAS、NumPy等。只是Python的基本构建块。我尝试了下面的代码,但无法重置计数变量来计算医生 ID 和金额。这段带注释的代码是多次尝试之一。不确定我是否需要使用嵌套的 for 循环或 for 循环-while 循环组合。

感谢所有帮助!

aggr_list = []
temp_drug_name = ''
doc_count = 0
amount = 0
for list_element …
Run Code Online (Sandbox Code Playgroud)

python loops aggregation

5
推荐指数
1
解决办法
7056
查看次数

标签 统计

aggregation ×1

loops ×1

python ×1