[英]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.