2014-03-13 52 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

相關問題