2017-07-27 28 views
0

好吧,我似乎無法找到解決方案,所以這是我的問題。我真的很感激,如果有人來自於stackoverflow社區,可能會很快提出解決方案,因爲我必須提交結果。在一定條件下連接兩個CSV文件或數據框

我有兩個csv文件(可以作爲數據框加載)。一個csv文件具有1458644行和12列,並且所有行條目將事件指定爲多個天的持續時間爲6個月的持續時間。

與氣象數據的其他CSV文件有4432項,與小時指定的每一天的氣象數據(不秒的持續時間在這裏)6個月

我想要做的是結合的條目這兩個文件使用一些pythonic操作(或與條件連接),以便第二個數據幀的小時條目中的數據被添加到第一個數據幀,但是單個小時的條目(在第二個數據幀中指定)被複制並重復第一個數據幀的單個小時

例如

第一數據幀

Date:      col1, cl2, 
1/2/2013 12:05:00   yyy etc. 
1/2/2013 12:12:00   yyy 
1/2/2013 13:13:00   yyy 
1/2/2013 14:14:00   yyy 
1/2/2013 14:30:00   yyy 
1/2/2013 14:45:00   yyy 
1/2/2013 17:00:00   yyy 
1/2/2013 17:17:00   yyy 
1/2/2013 17:30:00   yyy 
1/2/2013 18:17:00   yyy 
1/2/2013 18:30:00   yyy 

第二個數據幀

Date      col3 col4 
1/2/2013 12:00:00   xxx overcast 
1/2/2013 13:00:00   xxx overcast 
1/2/2013 14:00:00   xxx sunny 
1/2/2013 15:00:00   xxx sunny 
1/2/2013 16:00:00   xxx rain 
1/2/2013 17:00:00   xxx rain 
1/2/2013 18:00:00   xxx cloudy 

最終的結果應該是這樣的:

Date:      col1, col2, col3, col4 
1/2/2013 12:05:00   yyy etc. xxx overcast 
1/2/2013 12:12:00   yyy   xxx overcast 
1/2/2013 13:13:00   yyy   xxx overcast 
1/2/2013 14:14:00   yyy   xxx sunny 
1/2/2013 14:30:00   yyy   xxx sunny 
1/2/2013 14:45:00   yyy   xxx sunny 
1/2/2013 17:00:00   yyy   xxx rain 
1/2/2013 17:17:00   yyy   xxx rain 
1/2/2013 17:30:00   yyy   xxx rain 
1/2/2013 18:17:00   yyy   xxx cloudy 
1/2/2013 18:30:00   yyy   xxx cloudy 
+0

所以對於幀1你在幀2查找同一時刻每個記錄/行,其colunms ?並且在1和2之間有可變數目的匹配。 – hpaulj

回答

-2

我覺得你並不需要Python來解決此問題。你可以使用Excel的命令「vlookup()」來解決這個問題。 1.隱藏兩個csv文件的第一列。 2.使用拆分功能獲得小時數。 3.使用「vlookup」命令合併兩個數據。

希望能幫助你

+1

有很多原因使Python優於Excel來處理這種數據處理。 – asongtoruin

+0

好的你都是對的。但使用Python會遇到同樣的問題。大文件需要很多緩衝空間。如何處理這個問題。 –

+0

@寶立文如果你在大熊貓中使用大文件,你可以根據情況讀取塊中的數據,這可能會幫助你解決這些問題。否則,可能需要數據庫。 – asongtoruin

2

如果我們轉換爲正確的日期時間,這是非常簡單的:

df1['Date'] = pd.to_datetime(df1['Date']) 
df2['Date'] = pd.to_datetime(df2['Date']) 

df1['Hour'] = pd.DatetimeIndex(df1['Date']).floor('h') 

combined = df1.merge(df2, left_on='Hour', right_on='Date', how='left', 
        suffixes=('', '_r')) 
combined.drop(['Hour', 'Date_r'], axis=1, inplace=True) 
+0

該死的,謝天謝地,它像一個魅力一樣工作。此外,似乎有一些行完全缺失組合文件中的RIGHT(df2)數據幀。我檢查了第二個數據框,有一些列缺少值但不完全是第二個數據框的行條目是空的。任何想法,這可能是什麼原因造成的! –

+0

@Jon_Snow_很高興能有所幫助。我不確定你的意思,但你是否說一些日期時間沒有正確轉換? – asongtoruin

+0

不,我的意思是組合文件中的第二個數據幀的條目在某些行中完全針對第一個數據幀的條目丟失。就像df1在那一行有值,但是df2的值根本不存在 我猜日期時間是正確轉換的,但是有一些情況是從第二個df看來轉換失敗了。一個條目,例如在組合文件的日期時間在12:00缺少。我檢查了df2,那個小時的值是存在的。 –

相關問題