我有一个这样的csv数据集:
A, 10, USA
B,30, UK
C,4,IT
A,20,UK
B,10,USA
我想阅读此csv行并提供以下输出:
A has ran 30 miles with average of 15.
B has ran 30 miles with average of 20.
C has ran 4 miles with average of 4.
到目前为止,我的解决方案是读取csv数据并将其转换为字典,然后对它们进行迭代,查看“A”重复了多少次,以及它必须为平均值计算哪些值,最后生成结果。我已经编写了这段代码,但是我很难有效地计算a被重复的次数,并将英里数相加以创建我的最终输出。在Python中有什么想法吗?用C#做这件事对我来说有点容易,但我对Python不是很在行。
def main(filename):
f = open(filename,'r')
labels = ['name','miles','country']
data = csv.DictReader(f,labels,delimiter=',')
for line in data:
print (line['name']+" " + "has ran" +" "+ line['miles']+" "+"miles")
f.close()
您可以使用
defaultdict
存储值,然后将其打印出来:你的循环使用如下分割:
var1,var2,var3=行。拆分(“,”)
这将得到每个变量行中的每个值。然后根据需要使用变量。
您可以执行以下操作:
在这里用Load-csv函数加载它:https://github.com/kdavies4/ModelicaRes/blob/master/modelicares/util.py#L676 在那里下载util.py文件并执行以下操作:
你最终应该得到以下字典:
load_csv函数使用csv.reader自动创建一个字典,其中的键以在标题行中找到的条目命名。每个键的字典条目是对应列中的值列表。文件如下: http://kdavies4.github.io/ModelicaRes/util.html#modelicares.util.load_csv。py文件包含许多其他函数,但您可以安全地删除它们(只要您将
import numpy as np
放在顶部)。运行以下代码计算平均距离:
这将提供您想要的结果,并且如果数据被扩展(按行或列),它应该是灵活的。
凯文
相关问题 更多 >
编程相关推荐