2015-11-02 32 views
2

我已經逐一擴展了我的數據文件,但現在我需要從我的data_lv1_%Y%m%d.csv文件中交換兩行,並從我的spektrum_%Y%m%d.csv文件中轉換兩列。使用其他.csv中的列覆蓋.csv中的列

所以我的文件夾是擠滿了data_lv1_%Y%m%d.csvspektrum_%Y%m%d.csv,我需要找到匹配的「data_lvl1 ....」和「SPEKTRUM .....」文件得到了spektrum文件中的「列2,3」和它粘貼到columns and 42 and 43data_lv1_%Y%m%d.csv文件... 的時間戳的每一行中的文件是相同的%Y-%m-%d %H:%M

所以一個data_lv1_%Y%m%d.csv看起來是這樣的:

2014-11-05 08:00 0.19 0.16 0.00 0.16 9 14.0 14.1 14.0 69 8.4 0.0 SSE 0.00 0.4 SSE 14.0 13.6 13.6 14.7 1002.7 0.00 0.0 111 0.16 111 0.0 0.00 0.0 0.003 0.000 25.5 42 11.6 25.1 0.03 17 1 73.9 1 1.264390582977165 982.2914032430997 
2014-11-05 08:01 0.19 0.15 0.00 0.15 9 14.1 14.1 14.1 69 8.5 0.4 SSE 0.03 1.8 SSE 14.1 13.6 13.6 14.9 1002.7 0.00 0.0 116 0.17 116 0.0 0.00 0.0 0.003 0.000 25.5 42 11.6 25.1 0.00 9 1 39.1 1 1.2642303482739734 982.4159036331284 47 40 62 65 
2014-11-05 08:02 0.18 0.15 0.00 0.15 9 14.1 14.1 14.1 69 8.5 0.0 SSW 0.00 0.4 SSW 14.1 13.7 13.7 15.0 1002.9 0.00 0.0 118 0.17 118 0.0 0.00 0.0 0.003 0.000 25.6 42 11.7 25.2 0.00 16 1 69.6 1 1.2643326687934051 982.3363982086155 
2014-11-05 08:03 0.18 0.14 0.00 0.14 9 14.1 14.2 14.1 69 8.5 0.0 SSW 0.00 0.9 SSW 14.1 13.7 13.7 15.1 1002.7 0.00 0.0 121 0.17 121 0.0 0.00 0.0 0.003 0.000 25.6 42 11.7 25.2 0.00 11 1 47.8 1 1.264371779179926 982.3060119275706 
2014-11-05 08:04 0.18 0.14 0.00 0.14 9 14.2 14.2 14.2 69 8.6 0.4 S 0.03 1.3 S 14.2 13.7 13.7 15.1 1002.7 0.00 0.0 121 0.17 121 0.0 0.00 0.0 0.003 0.000 25.7 42 11.8 25.3 0.00 9 1 39.1 1 1.2642078834510273 982.4333610462828 
2014-11-05 08:05 0.16 0.13 0.00 0.13 9 14.2 14.2 14.2 69 8.6 0.4 S 0.03 2.2 S 14.2 13.8 13.8 15.3 1002.8 0.00 0.0 125 0.18 125 0.0 0.00 0.0 0.003 0.000 25.7 42 11.8 25.3 0.00 18 1 78.3 1 1.2641495894315147 982.4786642208419 
2014-11-05 08:06 0.16 0.13 0.00 0.13 9 14.3 14.3 14.2 69 8.7 3.1 S 0.19 6.3 SSW 13.6 13.8 13.1 14.7 1002.8 0.00 0.0 128 0.18 128 0.0 0.00 0.0 0.003 0.000 25.8 42 11.9 25.4 0.00 11 1 47.8 1 1.2641310901311893 982.4930418182402 
2014-11-05 08:07 0.16 0.13 0.00 0.13 9 14.3 14.3 14.3 69 8.7 0.4 SSE 0.03 1.3 S 14.3 13.8 13.8 15.4 1002.7 0.00 0.0 128 0.18 128 0.0 0.00 0.0 0.003 0.000 25.8 42 11.9 25.4 0.00 9 1 39.1 1 1.2640878249125196 982.5266690516158 
2014-11-05 08:08 0.15 0.12 0.00 0.12 9 14.3 14.3 14.3 69 8.7 0.0 SSW 0.00 0.4 SSW 14.3 13.9 13.9 15.5 1002.8 0.00 0.0 128 0.18 128 0.0 0.00 0.0 0.003 0.000 25.9 42 12.0 25.6 0.00 10 1 43.5 1 1.2640420201364455 982.5622726259796 
2014-11-05 08:09 0.15 0.12 0.00 0.12 9 14.3 14.3 14.3 69 8.7 0.9 S 0.05 2.7 S 14.3 13.9 13.9 15.6 1002.7 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 25.9 42 12.0 25.6 0.00 13 1 56.5 1 1.2640722442946564 982.5387794136938 
2014-11-05 08:10 0.15 0.12 0.00 0.12 9 14.3 14.3 14.3 68 8.5 0.4 S 0.03 1.8 S 14.3 13.8 13.8 15.6 1002.7 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.0 42 12.1 25.7 0.00 14 1 60.9 1 1.263973775777945 982.6153230398941 
2014-11-05 08:11 0.16 0.12 0.00 0.12 9 14.3 14.4 14.3 68 8.5 0.4 SSE 0.03 1.8 S 14.3 13.8 13.8 15.6 1002.7 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.1 41 11.8 25.7 0.00 12 1 52.2 1 1.2639454425247079 982.6373498520063 
2014-11-05 08:12 0.15 0.12 0.00 0.12 9 14.3 14.3 14.3 68 8.5 0.4 SSE 0.03 0.9 SSE 14.3 13.8 13.8 15.6 1002.9 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.2 41 11.9 25.8 0.00 10 1 43.5 1 1.2639898014116238 982.6028648434778 
2014-11-05 08:13 0.15 0.12 0.00 0.12 9 14.4 14.4 14.4 68 8.6 0.4 S 0.03 1.8 S 14.4 13.9 13.9 15.7 1002.8 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.3 41 12.0 25.8 0.00 10 1 43.5 1 1.263874621956528 982.6924114334497 
2014-11-05 08:14 0.15 0.12 0.00 0.12 9 14.4 14.4 14.4 68 8.6 0.0 SSE 0.00 0.4 S 14.4 13.9 13.9 15.7 1002.7 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.5 41 12.2 26.1 0.00 14 1 60.9 1 1.2638742617490812 982.6926915033389 
2014-11-05 08:15 0.15 0.11 0.00 0.11 9 14.4 14.4 14.4 68 8.6 0.4 S 0.03 1.3 S 14.4 13.9 13.9 15.9 1002.7 0.00 0.0 156 0.22 156 0.0 0.00 0.0 0.003 0.000 26.7 41 12.4 26.2 0.00 23 1 100.0 1 1.2638991682523613 982.6733264785339 
2014-11-05 08:16 0.15 0.11 0.00 0.11 9 14.4 14.4 14.4 68 8.6 0.0 S 0.00 1.8 S 14.4 13.9 13.9 16.0 1002.8 0.00 0.0 158 0.23 158 0.0 0.00 0.0 0.003 0.000 26.9 41 12.6 26.4 0.00 23 1 100.0 1 1.2639438134514795 982.6386163546646 60 49 88 82 
2014-11-05 08:17 0.15 0.12 0.00 0.12 9 14.4 14.5 14.4 68 8.6 0.4 S 0.03 1.8 S 14.4 13.9 13.9 16.1 1002.6 0.00 0.0 160 0.23 160 0.0 0.00 0.0 0.003 0.000 27.1 41 12.7 26.6 0.00 24 1 100.0 1 1.2637607975085479 982.780920605032 

spektrum_%Y%m%d.csv˚F爾斯是這樣的:

2014-11-05 06:54 1.2821175173539188 968.709953018414 
2014-11-05 06:55 1.2816088505861456 969.0944311378387 
2014-11-05 06:56 1.2812624875214302 969.3564059637908 
2014-11-05 06:57 1.2810378335850467 969.5264007341631 
2014-11-05 06:58 1.280514458802534 969.9226677701473 
2014-11-05 06:59 1.2804410978592646 969.9782380278693 
2014-11-05 07:00 1.2799436634193884 970.3552081987569 
2014-11-05 07:01 1.2793760789237318 970.7856981700221 
2014-11-05 07:02 1.2788601016214594 971.1773777485712 
2014-11-05 07:03 1.2787234324253685 971.2811766061762 
2014-11-05 07:04 1.2786275370664746 971.3540213982033 
2014-11-05 07:05 1.2786632282014252 971.3269081390605 

如果從spektrum_%Y%m%d.csv數據只是附着在的結束這將是巨大的,如果我能在data_lvl1....文件覆蓋列從spektrum_ ....文件中的列,但我不會介意文件,只要他們不會干擾'數據...'文件的行,每15分鐘只有值的最後一行....

我將不勝感激一些幫助如何獲得開始和哪些模塊要使用?熊貓是一種選擇這裏.... 最簡單和最快的事情是在從data_lvl1... 結束時只需連接從spektrum file文件謝謝你的任何建議

編輯:對不起,我不清楚的問題...合併標準是對於每個data_lvl1_TIMESTAMP文件,文件夾中都有一個spektrum_TIMESTAMP文件。時間戳是%Y%m%d。兩個文件每分鐘都有行,我想合併數據行。 spektrum文件有更多的行(範圍從00:00到23:59),data_lvl1有更少的行。因此spektrum files中匹配data_lvl1文件中時間戳的行應添加到data_lvl1文件中。 或者通過覆蓋現有的列43和42或將其添加到文件的末尾。

+0

合併準則究竟是什麼?那麼你認爲什麼是「相應的」? –

+0

「data_lvl1 ....」和「頻譜.....」這個文件在你的文件 – WoodChopper

+0

中,這個文件被稱爲例如'data_lvl1_20150101'和'spektrum_20150101' –

回答

1

您可以使用合併,如果要刪除NaN的列,請使用函數dropna

也許你不能讀取第一個CSV,因爲錯誤:

pandas.parser.CParserError: Error tokenizing data. C error: Expected 42 fields in line 2, saw 46

它與列數的問題。默認情況下,Pandas按第一行數據確定列數(它可以是標題)。因此在您的解決方案中,建議使用42列,但在第二行是46列。
一個解決方案是將製表符添加到第一行。如果要刪除所有具有NaN值的列,則可以添加相同數量的製表符或更多,因爲功能dropna會刪除它們。
下一個解決方案是定義所有名稱的46列。 link

我使用第一種方法添加製表符。

import pandas as pd 
import numpy as np 
import io 

temp=u"""2014-11-05 08:00 0.19 0.16 0.00 0.16 9 14.0 14.1 14.0 69 8.4 0.0 SSE 0.00 0.4 SSE 14.0 13.6 13.6 14.7 1002.7 0.00 0.0 111 0.16 111 0.0 0.00 0.0 0.003 0.000 25.5 42 11.6 25.1 0.03 17 1 73.9 1 1.264390582977165 982.2914032430997    
2014-11-05 08:01 0.19 0.15 0.00 0.15 9 14.1 14.1 14.1 69 8.5 0.4 SSE 0.03 1.8 SSE 14.1 13.6 13.6 14.9 1002.7 0.00 0.0 116 0.17 116 0.0 0.00 0.0 0.003 0.000 25.5 42 11.6 25.1 0.00 9 1 39.1 1 1.2642303482739734 982.4159036331284 47 40 62 65 
2014-11-05 08:02 0.18 0.15 0.00 0.15 9 14.1 14.1 14.1 69 8.5 0.0 SSW 0.00 0.4 SSW 14.1 13.7 13.7 15.0 1002.9 0.00 0.0 118 0.17 118 0.0 0.00 0.0 0.003 0.000 25.6 42 11.7 25.2 0.00 16 1 69.6 1 1.2643326687934051 982.3363982086155 
2014-11-05 08:03 0.18 0.14 0.00 0.14 9 14.1 14.2 14.1 69 8.5 0.0 SSW 0.00 0.9 SSW 14.1 13.7 13.7 15.1 1002.7 0.00 0.0 121 0.17 121 0.0 0.00 0.0 0.003 0.000 25.6 42 11.7 25.2 0.00 11 1 47.8 1 1.264371779179926 982.3060119275706 
2014-11-05 08:04 0.18 0.14 0.00 0.14 9 14.2 14.2 14.2 69 8.6 0.4 S 0.03 1.3 S 14.2 13.7 13.7 15.1 1002.7 0.00 0.0 121 0.17 121 0.0 0.00 0.0 0.003 0.000 25.7 42 11.8 25.3 0.00 9 1 39.1 1 1.2642078834510273 982.4333610462828 
2014-11-05 08:05 0.16 0.13 0.00 0.13 9 14.2 14.2 14.2 69 8.6 0.4 S 0.03 2.2 S 14.2 13.8 13.8 15.3 1002.8 0.00 0.0 125 0.18 125 0.0 0.00 0.0 0.003 0.000 25.7 42 11.8 25.3 0.00 18 1 78.3 1 1.2641495894315147 982.4786642208419 
2014-11-05 08:06 0.16 0.13 0.00 0.13 9 14.3 14.3 14.2 69 8.7 3.1 S 0.19 6.3 SSW 13.6 13.8 13.1 14.7 1002.8 0.00 0.0 128 0.18 128 0.0 0.00 0.0 0.003 0.000 25.8 42 11.9 25.4 0.00 11 1 47.8 1 1.2641310901311893 982.4930418182402 
2014-11-05 08:07 0.16 0.13 0.00 0.13 9 14.3 14.3 14.3 69 8.7 0.4 SSE 0.03 1.3 S 14.3 13.8 13.8 15.4 1002.7 0.00 0.0 128 0.18 128 0.0 0.00 0.0 0.003 0.000 25.8 42 11.9 25.4 0.00 9 1 39.1 1 1.2640878249125196 982.5266690516158 
2014-11-05 08:08 0.15 0.12 0.00 0.12 9 14.3 14.3 14.3 69 8.7 0.0 SSW 0.00 0.4 SSW 14.3 13.9 13.9 15.5 1002.8 0.00 0.0 128 0.18 128 0.0 0.00 0.0 0.003 0.000 25.9 42 12.0 25.6 0.00 10 1 43.5 1 1.2640420201364455 982.5622726259796 
2014-11-05 08:09 0.15 0.12 0.00 0.12 9 14.3 14.3 14.3 69 8.7 0.9 S 0.05 2.7 S 14.3 13.9 13.9 15.6 1002.7 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 25.9 42 12.0 25.6 0.00 13 1 56.5 1 1.2640722442946564 982.5387794136938 
2014-11-05 08:10 0.15 0.12 0.00 0.12 9 14.3 14.3 14.3 68 8.5 0.4 S 0.03 1.8 S 14.3 13.8 13.8 15.6 1002.7 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.0 42 12.1 25.7 0.00 14 1 60.9 1 1.263973775777945 982.6153230398941 
2014-11-05 08:11 0.16 0.12 0.00 0.12 9 14.3 14.4 14.3 68 8.5 0.4 SSE 0.03 1.8 S 14.3 13.8 13.8 15.6 1002.7 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.1 41 11.8 25.7 0.00 12 1 52.2 1 1.2639454425247079 982.6373498520063 
2014-11-05 08:12 0.15 0.12 0.00 0.12 9 14.3 14.3 14.3 68 8.5 0.4 SSE 0.03 0.9 SSE 14.3 13.8 13.8 15.6 1002.9 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.2 41 11.9 25.8 0.00 10 1 43.5 1 1.2639898014116238 982.6028648434778 
2014-11-05 08:13 0.15 0.12 0.00 0.12 9 14.4 14.4 14.4 68 8.6 0.4 S 0.03 1.8 S 14.4 13.9 13.9 15.7 1002.8 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.3 41 12.0 25.8 0.00 10 1 43.5 1 1.263874621956528 982.6924114334497 
2014-11-05 08:14 0.15 0.12 0.00 0.12 9 14.4 14.4 14.4 68 8.6 0.0 SSE 0.00 0.4 S 14.4 13.9 13.9 15.7 1002.7 0.00 0.0 137 0.20 137 0.0 0.00 0.0 0.003 0.000 26.5 41 12.2 26.1 0.00 14 1 60.9 1 1.2638742617490812 982.6926915033389 
2014-11-05 08:15 0.15 0.11 0.00 0.11 9 14.4 14.4 14.4 68 8.6 0.4 S 0.03 1.3 S 14.4 13.9 13.9 15.9 1002.7 0.00 0.0 156 0.22 156 0.0 0.00 0.0 0.003 0.000 26.7 41 12.4 26.2 0.00 23 1 100.0 1 1.2638991682523613 982.6733264785339 
2014-11-05 08:16 0.15 0.11 0.00 0.11 9 14.4 14.4 14.4 68 8.6 0.0 S 0.00 1.8 S 14.4 13.9 13.9 16.0 1002.8 0.00 0.0 158 0.23 158 0.0 0.00 0.0 0.003 0.000 26.9 41 12.6 26.4 0.00 23 1 100.0 1 1.2639438134514795 982.6386163546646 60 49 88 82 
2014-11-05 08:17 0.15 0.12 0.00 0.12 9 14.4 14.5 14.4 68 8.6 0.4 S 0.03 1.8 S 14.4 13.9 13.9 16.1 1002.6 0.00 0.0 160 0.23 160 0.0 0.00 0.0 0.003 0.000 27.1 41 12.7 26.6 0.00 24 1 100.0 1 1.2637607975085479 982.780920605032""" 

#for testing use io.StringIO(temp) 
df = pd.read_csv(io.StringIO(temp), sep="\t", header=None) 
#insteed io.StringIO(temp) use file 
#df = pd.read_csv('data.csv', sep="\t", header=None) 
print df 

temp1=u"""2014-11-05 06:54 1.2821175173539188 968.709953018414 
2014-11-05 07:55 1.2816088505861456 969.0944311378387 
2014-11-05 07:56 1.2812624875214302 969.3564059637908 
2014-11-05 07:57 1.2810378335850467 969.5264007341631 
2014-11-05 07:58 1.280514458802534 969.9226677701473 
2014-11-05 07:59 1.2804410978592646 969.9782380278693 
2014-11-05 08:00 1.2799436634193884 970.3552081987569 
2014-11-05 08:01 1.2793760789237318 970.7856981700221 
2014-11-05 08:02 1.2788601016214594 971.1773777485712 
2014-11-05 08:03 1.2787234324253685 971.2811766061762 
2014-11-05 08:04 1.2786275370664746 971.3540213982033 
2014-11-05 08:05 1.2786632282014252 971.3269081390605""" 

#for testing use io.StringIO(temp1) 
df = pd.read_csv(io.StringIO(temp1), sep="\t", header=None) 
#insteed io.StringIO(temp1) use file 
#df = pd.read_csv('spectrum.csv', sep="\t", header=None) 
print df1 

#you can remove columns, where are NaN values 
df = df.dropna(axis=1, how='any') 
print df 
#merge by first column - by dates 
result = pd.merge(df, df1, on=0) 
#fill NaN values by empty string 
result = result.fillna('') 
print result 
print result.to_csv(header=False, index=False) 
+0

感謝您的接受 – jezrael