gpt4 book ai didi

python - 通过动态创建嵌套字典来计算聚合

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:38 27 4
gpt4 key购买 nike

我是 python 的新手,目前我真的需要你的帮助和指导。我正在尝试读取一个包含三个列的 csv 文件,并根据第一列和第二列进行一些计算,即

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

A 在 2040 年花费的金额是所有“A”和“花费”金额的总和。这不会给我一个错误,但它在逻辑上是不正确的:

for row in rows:
cols = row.split(",")
truck = cols[0]
if (truck != 'A' and truck != 'B'):
continue
record = cols[1]
if(record != "earned" and record != "spent"):
continue
amount = int(cols[2])
#print(truck+" "+record+" "+str(amount))

if truck in entries:
#entriesA[truck].update(record)
if record in records:
records[record].append(amount)
else:
records[record] = [amount]
else:
entries[truck] = records
if record in records:
records[record].append(amount)
else:
entries[truck][record] = [amount]
print(entries)

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

entries[truck] = records
if record in records:
records[record].append(amount)

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

我得到:

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

但希望得到:

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

谢谢。

最佳答案

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

假设 in.csv 看起来像这样:

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

你可以用三行代码来做总计:

import pandas
df = pandas.read_csv('in.csv')
totals = df.groupby(['truck', 'type']).sum()

totals 现在看起来像这样:

              amount
truck type
A earned 60
spent 140
B earned 228

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

关于python - 通过动态创建嵌套字典来计算聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com