2015-12-21 65 views
0

我正在使用此脚本获取大型csv文件,并通过第一列中的唯一值将其分开,然后保存新文件。我还想在每个文件的末尾添加3列,这些列包含基于前一列的计算结果。这些列也会有标题。我当前的代码如下所示在python中将包含方程的列添加到csv文件中

import csv, itertools as it, operator as op 

csv_contents = [] 
with open('Nov15.csv', 'rb') as fin: 
    file_reader = csv.DictReader(fin) # default delimiter is comma 
    print file_reader 
    fieldnames = file_reader.fieldnames # save for writing 
    for line in file_reader:   # read in all of your data 
    csv_contents.append(line)   # gather data into a list (of dicts) 

# input to itertools.groupby must be sorted by the grouping value 
sorted_csv_contents = sorted(csv_contents, key=op.itemgetter('Object')) 

for groupkey, groupdata in it.groupby(sorted_csv_contents, key=op.itemgetter('Object')): 
    with open('slice_{:s}.csv'.format(groupkey), 'wb') as gips: 
     file_writer = csv.DictWriter(gips, fieldnames=fieldnames) 
     file_writer.writeheader()   
     file_writer.writerows(groupdata) 
+0

这哪里是代码尝试添加3列,以及它具体是不是工作? –

+0

我没有添加代码来添加3列,因为我无法弄清楚如何。从搜索有很多解释如何添加行但不列。我所能做的就是通过独特文本拼接原始文件 – Charlez

回答

0

如果您的意见是真实的,你很可能不喜欢这样(为虚列col1col2,计算col1 * col2

for line in file_reader: # read in all of your data 
    line['calculated_col0'] = line['col1'] * line['col2'] 
    csv_contents.append(line) # gather data into a list (of dicts) 
+0

我接收当我将该行添加到程序中时发生错误“KeyError:'col1' – Charlez

+0

当然。 'col1'只是一个组成。我不可能知道你的数据中有哪些列。 '我想在每个包含基于前面列的计算的文件末尾添加3列。 'col1'和'col2'应该是你以前的列,'*'是计算。 –

+1

哦,那真是愚蠢的我哈哈。谢谢。对于这一切我都很新颖。 – Charlez

相关问题