动态创建嵌套字典以计算聚合

2024-03-28 10:05:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,现在我真的需要你的帮助和指导。我试图读取一个包含三个col的csv文件,并根据第一列和第二列做一些计算,即

A   spent   100     A   spent   2040
A   earned  60
B   earned  48
B   earned  180
A   spent   40
.
.
.

其中,已用2040是所有“A”和“已用”金额之和。这不会给我一个错误,但在逻辑上是不正确的:

^{pr2}$

我知道这一部分是不正确的,因为我会将相同的内部字典列表添加到外部字典中,但我不确定如何从那里开始:

^{3}$

但是,我不确定动态创建新字典的语法不是“records”

我得到了:

{'B': {'earned': [60, 48], 'spent': [100]}, 'A': {'earned': [60, 48], 'spent': [100]}}

但希望得到:

{'B': {'earned': [48]}, 'A': {'earned': [60], 'spent': [100]}}

谢谢。在


Tags: 文件csv列表字典错误col逻辑金额
2条回答
if record in entries[truck]:
    entries[truck][record].append(amount)
else:
    entries[truck][record] = [amount]

我相信这就是你想要的?现在我们直接访问卡车的记录,而不是试图检查名为records的本地字典。就像你在没有卡车进入的情况下那样。在

对于您在这里进行的计算,我强烈推荐Pandas。在

假设in.csv如下所示:

truck,type,amount
A,spent,100
A,earned,60
B,earned,48
B,earned,180
A,spent,40

您可以使用三行代码进行合计:

^{pr2}$

totals现在如下所示:

              amount
truck type          
A     earned      60
      spent      140
B     earned     228

你会发现Pandas允许你在更高的层次上思考,避免在这种情况下摆弄低层次的数据结构。在

相关问题 更多 >