根据一列输入的随机数求和

2024-04-19 21:03:14 发布

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

我需要对File1的col1的每个值的“value”列金额求和,并将其导出到输出文件。我是python新手,需要为成千上万的记录做这件事。你知道吗

文件1

col1 col2              value
559 1   91987224    2400000000
559 0   91987224    100000000
558 0   91987224    100000000
557 2   87978332    500000000
557 1   59966218    2400000000
557 0   64064811    100000000

期望输出:

col1      Sum 
559     2500000000
558     1000000000
557     3000000000    

提前谢谢。你知道吗

注:由于权限问题,我无法使用熊猫图书馆。我尝试了以下代码。与追溯共享:

import csv 
fin = open("File1.txt","r")
list_txid = {}
num_tx = {}
amount_tx = {}

for line in fin:
    line = line.rstrip()
    f = line.split("\t")
    txid = f[0]
    amount = int(f[3])

fin.close()
for txid in list_txid:
    num_tx[txid] += 1
    amount_tx[txid] += amount
    print("{0}\t{1:d}\t{2:d}".format(txid, amount_tx[txid]))

回溯:

回溯(最近一次呼叫): 文件“C:\Users…”\总和.py,第14行,在 金额=整数(f[3]) 索引器错误:列表索引超出范围


Tags: 文件inforvalueline金额amountfile1
2条回答

使用^{}创建DataFrame,然后使用^{}level=0索引并聚合sum。上次导出^{}

df = pd.read_csv(file1)
df.groupby(level=0)['value'].sum().to_file(file2)

您可以使用pandas来实现:

df = pd.read_csv('in.csv', delim_whitespace=True)

#      col1      col2       value
# 559     1  91987224  2400000000
# 559     0  91987224   100000000
# 558     0  91987224   100000000
# 557     2  87978332   500000000
# 557     1  59966218  2400000000
# 557     0  64064811   100000000

result = df.groupby(df.index)['value'].sum().reset_index()

#    index       value
# 0    557  3000000000
# 1    558   100000000
# 2    559  2500000000

result.to_csv('out.csv', index=False)

相关问题 更多 >