我有一个csv文件,其中包含如下数据:
Name Value Value2 Value3 Rating
ddf 34 45 46 ok
ddf 67 23 11 ok
ghd 23 11 78 bad
ghd 56 33 78 bad
.....
我想做的是循环通过我的csv并将具有相同名称的行添加到一起,每行末尾的字符串对于该名称将始终保持不变,这样就不用担心它会更改。我如何在python中将它改成这个呢?你知道吗
Name Value Value2 Value3 Rating
ddf 101 68 57 ok
ghd 79 44 156 bad
编辑:
在我的代码中,我做的第一件事是将列表按顺序排序,以便相同的名称彼此接近,然后我尝试使用for循环通过检查第一列上的名称值是否相同来将编号的行添加到一起。这是一个非常丑陋的方式做这件事,我是在我的智囊团。你知道吗
sortedList = csv.reader(open("keywordReport.csv"))
editedFile = open("output.csv",'w')
wr = csv.writer(editedFile, delimiter = ',')
name = ""
sortedList = sorted(sortedList, key=operator.itemgetter(0), reverse=True)
newKeyword = ["","","","","",""]
for row in sortedList:
if row[0] != name:
wr.writerow(newKeyword)
name = row[0]
else:
newKeyword[0] = row[0] #Name
newKeyword[1] = str(float(newKeyword[1]) + float(row[1]))
newKeyword[2] = str(float(newKeyword[2]) + float(row[2]))
newKeyword[3] = str(float(newKeyword[3]) + float(row[3]))
方法很简单:
如果你需要做进一步的分析和统计,熊猫会带你走很长的路而不费吹灰之力。因为这里的用例就像使用锤子杀死苍蝇,但是我想提供这个替代方案。你知道吗
你知道吗文件.csv你知道吗
代码
为了便于比较,等效的
awk
程序将打印
如果是csv输入,而您想要csv输出,则需要添加
-F,
参数并更改为OFS=,
相关问题 更多 >
编程相关推荐