gpt4 book ai didi

python - 在 Python 中汇总 CSV 行

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:50 26 4
gpt4 key购买 nike

我有一个包含如下数据的 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]))

最佳答案

pandas 的方式非常简单:

import pandas as pd

aframe = pd.read_csv('thefile.csv')

Out[19]:
Name Value Value2 Value3 Rating
0 ddf 34 45 46 ok
1 ddf 67 23 11 ok
2 ghd 23 11 78 bad
3 ghd 56 33 78 bad

r = aframe.groupby(['Name','Rating'],as_index=False).sum()

Out[40]:
Name Rating Value Value2 Value3
0 ddf ok 101 68 57
1 ghd bad 79 44 156

如果您需要做进一步的分析和统计,Pandas 将助您一臂之力。因为这里的用例就像用锤子杀死苍蝇,但我想提供这种替代方案。

关于python - 在 Python 中汇总 CSV 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com