排序时数据文件的标题会消失

时间:2014-04-13 08:42:38

标签: python sorting python-2.7 csv

我有一个包含数据行的csv文件。第一行是列的标题。 我想通过某个参数(特别是第一列)对数据进行排序,但当然要将标题保持在原位。 当我执行以下操作时,标题将完全消失,并且不包含在输出文件中。 任何人都可以建议如何保持标题但跳过它并排序其余的行? (对于fwiw,第一列是数字和字母的混合)。

谢谢!

这是我的代码:

import csv
import operator

sankey = open('rawforsankey.csv', "rb")
raw_reader = csv.reader(sankey)


raw_data = []
for row in raw_reader:
    raw_data.append(row)


raw_data_sorted = sorted(raw_data, key=operator.itemgetter(0))

myfiletest = open('newfiletest.csv', 'wb')
wr = csv.writer(myfiletest,quoting = csv.QUOTE_ALL)

wr.writerows(raw_data_sorted)


sankey.close()
myfiletest.close()

编辑:应该提一下我在代码中尝试了这种变化:

raw_data_sorted = sorted(raw_data[1:], key=operator.itemgetter(0))

但得到了相同的结果

1 个答案:

答案 0 :(得分:2)

您对所有数据进行了排序,包括标题,这意味着它仍然存在,但可能在某个地方的结果输出的中间中。

这是您在一列上对CSV进行排序的方法,保留标题:

import csv
import operator

with open('rawforsankey.csv', "rb") as sankey:
    raw_reader = csv.reader(sankey)
    header = next(raw_reader, None)
    sorted_data = sorted(raw_reader, operator.itemgetter(0))

with open('newfiletest.csv', 'wb') as myfiletest:
    wr = csv.writer(myfiletest, quoting=csv.QUOTE_ALL)
    if header:
        wr.writerow(header)
    wr.writerows(sorted_data)

请记住,排序是按字典顺序完成的,因为所有列都是字符串。因此,10例如在9之前排序。例如,如果您的数据是数字,请使用更具体的排序键。