然后计算并将结果插入python中的csv中

2024-09-29 23:18:36 发布

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

这是我的第一篇文章,但我希望你能告诉我如何执行计算,并插入一个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

我希望能为每个班级的学生做这个

非常感谢


Tags: dataclasstext1data1data2data3text3data4
1条回答
网友
1楼 · 发布于 2024-09-29 23:18:36

我总是喜欢这种类型的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))

相关问题 更多 >

    热门问题