2016-08-31 102 views
0

有沒有一種簡潔的方式來做到這一點,或者我最好是創建一個新的數據框,在構建每一列時查看Panel?pandas - 使用查找表將列轉換爲DataFrame列標題

我有一個三維數組,我已經放入一個面板,我想重新組織它使用2軸的2D查找表,以便它將成爲一個DataFrame從我的查找表中取得的標籤使用最接近的值。在一種雙向查找類型中。

我試圖實現的主要目標是能夠快速定位基於標籤的時間序列數據。如果有更好的方法,請告訴我!

我的數據是在一個面板,看起來像這樣,項目軸緯度和短軸經度。

data 
Out[920]: 
<class 'pandas.core.panel.Panel'> 
Dimensions: 53 (items) x 29224 (major_axis) x 119 (minor_axis) 
Items axis: 42.0 to 68.0 
Major_axis axis: 2000-01-01 00:00:00 to 2009-12-31 21:00:00 
Minor_axis axis: -28.0 to 31.0 

和我的查找表是這樣的:

label_coords 
Out[921]: 
      lat  lon 
label      
2449 63.250122 -5.250000 
2368 62.750122 -5.750000 
2369 62.750122 -5.250000 
2370 62.750122 -4.750000 

我不知所措我那種。一般來說,python很新,而且昨天才真正開始使用熊貓。

非常感謝提前!對不起,如果這是重複的,我找不到任何關於相同類型的問題。

安迪

回答

0

想出了一個基於循環的解決方案,我想我可能也後萬一別人有這種類型的問題

我改變了我的標籤座標數據幀進行讀取,這樣的方式,標籤爲一列,然後用於樞轉功能:

label_coord = label_coord.pivot('lat','lon','label') 

這然後產生一個數據幀,其中標籤是的值和緯度/經度的索引/列

然後使用此循環,其中數據是一個面板中的問題:

data_labelled = pd.DataFrame() 
for i in label_coord.columns: #longitude 
    for j in label_coord.index: #latitude 
     lbl = label_coord[i][j] 
     shut_nump['%s'%lbl]=data[j][i] 
相關問題