使用多于1列对Excel数据进行排序

时间:2015-09-08 01:23:14

标签: python excel sorting csv

我正在尝试使用2或3列对excel数据进行排序(如果愿意,可以使用嵌套排序)。 目前发生的事情是我得到一个包含日志条目的文本文件(有时超过1个),然后我必须将这些条目转换为托管的Excel电子表格。

我已设法做到这一点,但现在我的经理要我分别按“日期”和“时间”列对其进行排序。

所以要把它分解,我只想弄清楚我是怎么做到的。

要求:

通过多列对csv或excel电子表格进行排序,并将它们写入文档(最好是相同类型)。

CODE:

目前我的代码是:

import csv, os
import operator

testcsv= open('test.csv', 'r')
csvSort = csv.reader(testcsv, delimiter=",")
sort = sorted(csvSort,key=operator.itemgetter(0,1))

for eachline in sort:
    print eachline

这适用于“打印”和检查。 但我无法将数据写回excel电子表格。

如果我这样做,它会全部变为1行而不是多行。 当我对文件写行时,这是我使用的代码:

dest = "C:/Test2.csv"
for eachline in sort:
    if not os.path.exists(dest):
        fileToCreate = open(dest, 'w')
        fileToCreate.writelines(eachline)
    else:
        fileToCreate = open(dest, 'a+')
        fileToCreate.writelines(eachline)
    fileToCreate.close()

也许如果某人有更好的选择让我使用或添加一些可以帮助我的东西,我将不胜感激。

测试正在使用的输入数据文件

05/02/2015,20:22:24,201534
07/02/2015,20:23:24,201534
05/02/2015,20:23:24,201534
06/02/2015,20:23:24,201534
05/02/2015,20:24:24,201534
13/02/2015,20:24:24,201534
13/02/2015,20:24:24,201534
12/02/2015,20:21:24,201534
01/02/2015,20:21:24,201534
21/02/2015,20:21:24,201534
21/02/2015,20:21:24,201534
13/02/2015,20:21:24,201534
13/02/2015,20:21:24,201534
13/02/2015,20:21:24,201534
13/02/2015,20:21:24,201534
13/02/2015,20:21:24,201534
13/02/2015,20:21:24,201534
13/02/2015,20:21:24,201534
13/02/2015,20:21:24,201534
05/02/2015,20:21:24,201534
05/02/2015,20:21:24,201534
05/02/2015,20:21:24,201534
05/02/2015,20:18:24,201534
05/02/2015,20:18:24,201534
05/02/2015,20:18:24,201534
05/02/2015,20:22:24,201534

1 个答案:

答案 0 :(得分:1)

您可以重复使用csv.writer来回写整个排序列表。它有一个名为writerows()的函数。示例 -

dest = "C:/Test2.csv"
with open(dest,'w') as f:
    writer = csv.writer(f)
    writer.writerows(sort)

请注意,您无需将分隔符指定为,,默认分隔符为逗号。

目前,当您将writelineseachline列表一起使用时,它会同时写入列表的每个元素,但不会添加所需的换行符。因此,所有数据似乎都在一行中。您应该使用csv.writer来写回csv / excel文件。