2015-01-13 120 views
1

我有一些麻煩將我的csv數據從寬表格式csv轉換爲python中的長格式csv。目前看起來像這樣:使用python將寬格式csv轉換爲長格式csv

Time Temp1 Temp2 Temp3 Temp4 Temp5 
00 21  32 33 21 23 
10 34  23 12 08 23 
20 12  54 33 54 55 

現在我想將這些數據轉換爲長數據格式。這樣的事情:

00 temp1 21 
00 temp2 32 
00 temp3 33 
00 temp4 21 
00 temp5 23 
10 temp1 34 
10 temp2 23 
10 temp3 12 
10 temp4 08 
10 temp5 23 
20 temp1 12 
20 temp2 54 
. 
. 
. 

任何關於如何在python中攻擊這樣的問題的幫助將是非常有用的。

+0

什麼時間? –

+0

時間列表示以秒爲單位的經過時間,並且溫度1,溫度2,溫度3,溫度4,溫度5列表示在該時刻來自不同傳感器的溫度。 –

回答

1

您可以使用csv模塊,但邏輯相同。

with open("in.csv") as f,open("out.csv","w") as out: 
    headers = next(f).split()[1:] # keep headers/Time Temp1 Temp2 Temp3 Temp4 Temp5 
    for row in f: 
     row = row.split() 
     time = row[0] 
     data = zip(headers, row[1:]) # match correct temp to row item 
     for a, b in data: 
      out.write("{} {} {}\n".format(time,a.lower(),b)) 
      print("{} {} {}".format(time,a.lower(),b)) 


00 temp1 21 
00 temp2 32 
00 temp3 33 
00 temp4 21 
00 temp5 23 
10 temp1 34 
10 temp2 23 
10 temp3 12 
10 temp4 08 
10 temp5 23 
20 temp1 12 
20 temp2 54 
20 temp3 33 
20 temp4 54 
20 temp5 55 

out.csv:

00 temp1 21 
00 temp2 32 
00 temp3 33 
00 temp4 21 
00 temp5 23 
10 temp1 34 
10 temp2 23 
10 temp3 12 
10 temp4 08 
10 temp5 23 
20 temp1 12 
20 temp2 54 
20 temp3 33 
20 temp4 54 
20 temp5 55 
+1

如果文件真的被可變長度的空格分隔,這可能比'csv'更自然。 – DSM

1

嘗試使用大熊貓數據幀用於存儲csv文件的數據。它提供了一個內置函數pandas.melt,這對你的問題很有用。

以下是文檔中的link