-2

这是我的第一篇文章,但我希望您能告诉我如何执行计算并将值插入 csv 数据文件。

对于每一行,我希望能够获取每个“唯一类”并将第 12 列中获得的分数求和。请参见下面的示例数据;

text1,Data,Class,Uniqueclass1,data1,data,2,data2,data3,data4,data5,175,12,data6,data7
text1,Data,Class,Uniqueclass1,data1,data,2,data2,data3,data4,data5,171,18,data6,data7
text1,Data,Class,Uniqueclass2,data1,data,4,data2,data3,data4,data5,164,5,data6,data7
text1,Data,Class,Uniqueclass2,data1,data,4,data2,data3,data4,data5,121,21.5,data6,data7
text2,Data,Class,Uniqueclass2,data1,data,4,data2,data3,data4,data5,100,29,data6,data7
text2,Data,Class,Uniqueclass2,data1,data,4,data2,data3,data4,data5,85,21.5,data6,data7
text3,Data,Class,Uniqueclass3,data1,data,3,data2,data3,data4,data5,987,35,data6,data7
text3,Data,Class,Uniqueclass3,data1,data,3,data2,data3,data4,data5,286,18,data6,data7
text3,Data,Class,Uniqueclass3,data1,data,3,data2,data3,data4,data5,003,5,data6,data7

因此,例如第一个 Uniqueclass 持续前两行。因此,我希望能够在该行上插入一个后续值,即“346”(175 和 171 的总和)。结果如下所示:

text1,Data,Class,Uniqueclass1,data1,data,2,data2,data3,data4,data5,175,12,data6,data7,346
text1,Data,Class,Uniqueclass1,data1,data,2,data2,data3,data4,data5,171,18,data6,data7,346

我希望能够为每个独特的类做到这一点'

非常感谢

4

1 回答 1

3

我总是喜欢defaultdict这种类型的课程。

这是我的尝试:

from collections import defaultdict

class_col = 3
data_col = 11

# Read in the data
with open('path/to/your/file.csv', 'r') as f:
    # if you have a header on the file
    # header = f.readline().strip().split(',')
    data = [line.strip().split(',') for line in f]

# Sum the data for each unique class.
# assuming integers, replace int with float if needed
count = defaultdict(int)
for row in data:
    count[row[class_col]] += int(row[data_col])

# Append the relevant sum to the end of each row
for row in xrange(len(data)):
    data[row].append(str(count[data[row][class_col]]))

# Write the results to a new csv file
with open('path/to/your/new_file.csv', 'w') as nf:
    nf.write('\n'.join(','.join(row) for row in data))
于 2013-09-23T02:13:53.050 回答