使用超过 1 列对 excel 数据进行排序
Posted
技术标签:
【中文标题】使用超过 1 列对 excel 数据进行排序【英文标题】:Sorting excel data using more than 1 column 【发布时间】:2015-12-03 13:20:51 【问题描述】:我正在尝试使用 2 或 3 列对 excel 数据进行排序(如果您愿意,可以使用嵌套排序)。 目前发生的情况是我得到一个带有日志条目的文本文件(有时超过 1 个),然后我必须将这些条目转换为托管的 Excel 电子表格。
我已经做到了,但现在我的经理希望我也分别按“日期”和“时间”列对其进行排序。
所以为了分解它,我只是想弄清楚我该怎么做。
要求:
通过多列对 csv 或 excel 电子表格进行排序并将它们写入文档(最好是相同类型)。
代码:
目前我的代码是:
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】:您可以重复使用csv.writer
来写回整个排序的列表列表。为此,它有一个名为writerows()
的函数。示例 -
dest = "C:/Test2.csv"
with open(dest,'w') as f:
writer = csv.writer(f)
writer.writerows(sort)
请注意,您不需要将分隔符指定为 ,
,默认分隔符是逗号。
目前,当您将writelines
与eachline
列表一起使用时,它会同时写入列表的每个元素,但不会添加所需的换行符。因此,所有数据似乎都在一行中。您应该使用csv.writer
写回 csv/excel 文件。
【讨论】:
谢谢,这在大多数情况下都有效,但是似乎为每个条目添加了一个额外的行,有什么方法可以避免这种情况吗? (它在 excel 中添加了一个额外的行,而不是记事本) 嗯,记事本的行之间有换行符吗? 我不知道,我认为 1 记事本新行相当于 Microsoft Office 中的 2 行新行的前提是错误的 嗯,我不确定,你能告诉我输入文件吗?更新问题中的内容。 完成 - 实际上只是一些测试日期、时间和错误代码以上是关于使用超过 1 列对 excel 数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章