2014-03-13 30 views
0

我有大约200个csv文件,列数相同:A,B,C,D,E。我想按照列B和列A对它们进行排序。可以在Python中执行此操作吗?Python:如何在python中使用现有的csv文件进行排序

+0

是的,这是可能的。您是否尝试在网站上搜索类似/相同的问题?有很多解决方案。 – beroe

+0

我在你的帖子上做了一个编辑,用csv替换excel,因为它看起来像你不用excel文件,但真正的csv文件。对? – Lynch

+0

@beroe,我希望你给了我一个相同问题的链接。 – pmjn6

回答

1

csv是一个标准的文本文件(不是Excel文件)。 Python当然可以处理这些文件。有一个名为csv的库,专为这种类型的工作而设计:http://docs.python.org/2/library/csv.html

假设文件大小是可管理的,您应该能够将它们全部加载到内存中,然后进行排序。

你到目前为止尝试过什么?

+0

我在将数据写入csv文件之前,通过使用熊猫对数据进行排序来解决问题。所以文件现在已经排序 – pmjn6

2

我为csv文件创建了一个排序程序,它使用两个键输出一个新的排序后的csv文件。为了排序,首先按二级键,然后按主键排序

要对多个文件进行排序,请循环创建基本统计数组的所有输入文件。 然后对结果进行排序。

我只有一个输入文件,所以我不必这样做。这是我为一个文件做的。你会改变我已经入侵的地方是输入循环的结果。

ifile = open('file.csv', 'rb') 
infile = csv.DictReader(ifile) 
infields = infile.fieldnames 
try: 
    # This assumes that the first row is data 
    sortedlist = sorted(infile, key = lambda d: float(d['statistic2'], reverse =dir) # dir is True or False 
except ValueError: 
    # Go back and skip header 
    ifile.seek(0) 
    ifile.next() 
    sortedlist = sorted(infile, key = lambda d: float(d['statistic2'], reverse =dir) # dir is True or False 
# Now do the primary key. 
    sortedlist.sort(key = lambda d: float(d['statistic1'], reverse =dir) # dir is True or False 

ifile.close() 

现在使用csv.DictWriter打开输出文件,写入标题并输出排序列表中的数据。

+0

@Navid Wu我编辑了答案是正确的。我不小心做了第二种错误的复制粘贴。 – sabbahillel

相关问题