Подведение итогов по случайному количеству входов столбца
Мне нужно суммировать количество столбцов "значение" для каждого значения col1 файла1 и экспортировать его в выходной файл. Я новичок в Python и должен сделать это для тысяч записей.
File1
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
Заранее спасибо.
PS: я не могу использовать библиотеку панд из-за проблем с разрешениями. Я попробовал следующий код. Поделиться с трассировкой спины:
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]))
Проследить:
Traceback (последний вызов был последним): файл "C:\Users....\sum.py", строка 14, в amount = int(f[3]) IndexError: список индексов вне диапазона
2 ответа
Использование read_csv
для создания DataFrame
, затем groupby
по индексу по level=0
и совокупность sum
, Последний экспорт to_csv
:
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)