3 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
假設(shè)您的數(shù)據(jù)位于元組列表中(并且您不/不能使用 pandas),您可以執(zhí)行以下操作:
people = [('adam', 10000), ('bartek', 1000),
('tomasz', 5000), ('adam', 1000), ('bartek', 3000)]
report = {}
for person in people:
name, salary = person
# we initialize the counter
if name not in report:
report[name] = {'salary': 0, 'times': 0}
# then we add to it
report[name]['salary'] = report[name]['salary'] + salary
report[name]['times'] += 1
然后您可以使用以下方法檢索每個(gè)值:
print(report)
print(report['adam'])
print(report['adam']['salary'])
print(report['adam']['times'])

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以利用csv模塊來實(shí)現(xiàn)此目的。將文件中的數(shù)據(jù)讀入字典 - 使用名稱作為鍵并將值存儲在該鍵下的列表中。使用collections.defaultdict最簡單:
寫入數(shù)據(jù)文件:
name = "f.txt"
with open(name, "w") as f:
? ? f.write("""adam;10000
bartek;1000
tomasz;5000
adam;1000
bartek;3000""" )
過程數(shù)據(jù)文件:
import csv # https://docs.python.org/3/library/csv.html
from collections import defaultdict
# read data into dictionary
results = defaultdict(list)
with open(name, newline='') as f:
? reader = csv.reader(f, delimiter=";")
? for line in reader:
? ? ? if line:
? ? ? ? ? results[line[0]].append(int(line[1]))
print(results)
# write data from dictionary to file
with open("new" + name, "w", newline="") as f:
? ? writer = csv.writer(f, delimiter=";")
? ? for key in results:
? ? ? ? writer.writerow([key, sum(results[key]), len(results[key])])
# read file and print it
print(open("new"+name).read())
輸出:
# read data
defaultdict(<class 'list'>, {'adam': [10000, 1000],?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'bartek': [1000, 3000],?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'tomasz': [5000]})
# written results
adam;11000;2
bartek;4000;2
tomasz;5000;1

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
Pandas 是 Python 中處理數(shù)據(jù)最流行的包之一。它將允許您將 csv 數(shù)據(jù)(通過 read_csv 函數(shù))存儲到 python 對象(稱為 Pandas Dataframe)中,然后對其應(yīng)用多個(gè)函數(shù)。
將數(shù)據(jù)放入 pandas 數(shù)據(jù)框(稱為df
)后,您可以執(zhí)行以下操作
df_result = df.groupby('name')['value'].sum().reset_index()
為此,您可以按名稱重新組合數(shù)據(jù),并計(jì)算具有相同名稱的每個(gè)值的總和。
添加回答
舉報(bào)