簡體   English   中英

Python排序CSV文件

[英]Python sort CSV File

嘿,我有一個包含很多行的CSV文件,但其中一行不斷重復。 是否可以僅保留該行的名字並保留所有其他數據。 我嘗試過使用熊貓,但熊貓要求使用諸如總計之類的功能。 我在CSV文件中的數據就像。

H1 h2 h3 h4
A 1 2 3 4
A 2 3 4 5
A 3 4 5 6
B 1 2 3 4
B 2 3 4 5
B 3 4 5 6
C 1 2 3 4
C 2 3 4 5
C 3 4 5 6

其中每個都有一個標題。 由h1-h4表示。 我的數據不是這樣,它包含真實文本值。

我想重新排列數據,使其看起來像這樣。

A 
   1 2 3 4
   2 3 4 5
   3 4 5 6
B
   1 2 3 4
   2 3 4 5
   3 4 5 6

C
   1 2 3 4
   2 3 4 5
   3 4 5 6

要么

 A 1 2 3 4
   2 3 4 5
   3 4 5 6

B  1 2 3 4
   2 3 4 5
   3 4 5 6

C  1 2 3 4
   2 3 4 5
   3 4 5 6

因此,基本上我希望它按第一個標頭名稱h1分組。 任何幫助,將不勝感激謝謝。

下面的方法應該起作用,它假定您的源數據是用空格定界的(如您所示),如果它使用逗號或制表符,則需要更改我使用的定界符。

import csv

with open("input.csv", "r") as f_input, open("output.csv", "wb") as f_output:
    csv_input = csv.reader(f_input, delimiter=" ")
    csv_output = csv.writer(f_output)
    headers = next(csv_input)

    cur_row = ""
    for cols in csv_input:
        if cur_row != cols[0]:
            cur_row = cols[0]
            csv_output.writerow([cur_row])
        csv_output.writerow(cols[1:])

給您一個輸出CSV文件,如下所示:

A
1,2,3,4
2,3,4,5
3,4,5,6
B
1,2,3,4
2,3,4,5
3,4,5,6
C
1,2,3,4
2,3,4,5
3,4,5,6

使用Python 2.7測試

要為每個組添加標題,請按如下所示更改第一行writerow

csv_output.writerows([[cur_row], headers])

提供以下輸出:

A
H1,h2,h3,h4
1,2,3,4
2,3,4,5
3,4,5,6
B
H1,h2,h3,h4
1,2,3,4
2,3,4,5
3,4,5,6
C
H1,h2,h3,h4
1,2,3,4
2,3,4,5
3,4,5,6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM