Python:如何对CSV文件中的整数求和,而只对某个变量的整数求和?

2024-09-24 06:34:26 发布

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

我正在尝试使用Python在csvfile中编写一些数据。我有一份欧洲歌唱大赛的国家和结果清单,看起来是这样的:

Country,Points,Year
Belgium;181;2016
Netherlands;153;2016
Australia;511;2016
Belgium;217;2015
Australia;196;2015

等等。你知道吗

总的来说,我想把所有国家在过去几年里得到的分数加起来,所以输出应该是这样的: “比利时:398”,“荷兰:153”,“澳大利亚:707”等等。你知道吗

我的代码是这样的:

import csv
with open('euro20042016.csv', 'r') as csvfile:
    pointsallyears = []
    countriesallyears = []
    readFILE = csv.reader(csvfile, delimiter=';')
    for row in readFILE:
        countriesallyears.append(row[0])
        pointsallyears.append(row[1])
csvfile.close()

results = []
for result in pointsallyears:
    result = int(result)
    results.append(result)

scorebord = zip(countriesallyears,results)

所以我已经确定结果/点是实际整数,并且我过滤掉了第三行(年份),但是我不知道如何从这里开始。提前多谢了!你知道吗


Tags: csv数据csvfileinforresult国家results
3条回答

把@Mikk的评论变成一个实际的答案。除了import之外的两行

import pandas as pd
df = pd.read_csv('euro20042016.csv', sep = ';')
print df.groupby('Country')['Points'].sum()

您需要做的唯一额外的事情是将文件的第一行改为用;而不是,分隔。你知道吗

我决定玩弄一下你的代码,这就是我想到的。这里,row[0]包含国家名称,row[1]包含我们需要的值。我们检查这个国家是否已经存在于我们用来维护聚合的字典中,如果它不存在,我们就创建它。你知道吗

import csv
with open('euro20042016.csv', 'r') as csvfile:
score_dict={}
readFILE = csv.reader(csvfile, delimiter=';')
for row in readFILE:
    # Only rows with 3 elements have the data we need
    if len(row) == 3:
        if row[0] in score_dict:
            score_dict[row[0]]+=int(row[1])
        else:
            score_dict[row[0]]=int(row[1])
csvfile.close()
print score_dict

我得到的输出是

{'Belgium': 398, 'Australia': 707, 'Netherlands': 153}

我相信这就是你的目标。你知道吗

如果你在理解任何东西时遇到问题,请在评论中告诉我。你知道吗

我稍微修改了你的代码,用字典和国家名称作为键。结果字典d将国家名称作为关键字,值是总分。你知道吗

import csv

d = dict()

with open('euro20042016.csv', 'r') as csvfile:
    readFILE = csv.reader(csvfile, delimiter=';')
    print (readFILE)
    c_list = []
    for row in readFILE:
        if row[0] in c_list:
            d[row[0]] = d[row[0]] + int(row[1])
        else:
            c_list.append(row[0])
            d[row[0]] = int(row[1])
csvfile.close()

print(d)

相关问题 更多 >