2017-07-14 77 views
1

我有兩個數據框。一個與網站的座標,另一個與他們之間的連接。 例如:使用pandas中其他數據框的值覆蓋數據框中的值

DF1:

SITE_ID  LAT  LON 
101  23.4244 31.5356 
102  45.0090 14.2424 
103  35.3444 19.4242 
104  42.0000 18.0002 

DF2

SITE_ID FIRST SECOND THIRD 
101  102 104  NaN 
102  103 NaN  NaN 
103  104 NaN  NaN 
104  NaN NaN  NaN 

現在我想改變這一切值(所有列)在DF2與DF1座標。 所需的輸出:

SITE_ID    FIRST    SECOND  THIRD 
23.4244 31.5356 45.0090 14.2424 42.0000 18.0002 NaN 
45.0090 14.2424 35.3444 19.4242   NaN  NaN 
35.3444 19.4242 42.0000 18.0002   NaN  NaN 
42.0000 18.0002  NaN     NaN  NaN 

它的確定對這個白色的逗號或投入列出了小的變化。後來我要把它轉換成json,並用javascript google maps api .. 說實話,我沒有太多想法,我嘗試了轉換成字典,或者在合併時覆蓋,但沒有什麼一直工作到最後。

回答

3

這裏有一種方法,從df1創建映射和df2

In [1120]: mapping = df1.set_index('SITE_ID').astype(str).apply(' '.join, axis=1).to_dict() 

In [1121]: mapping 
Out[1121]: 
{101: '23.4244 31.5356', 
102: '45.009 14.2424', 
103: '35.3444 19.4242', 
104: '42.0 18.0002'} 

In [1122]: df2.replace(mapping) 
Out[1122]: 
      SITE_ID   FIRST  SECOND THIRD 
0 23.4244 31.5356 45.009 14.2424 42.0 18.0002 NaN 
1 45.009 14.2424 35.3444 19.4242   NaN NaN 
2 35.3444 19.4242  42.0 18.0002   NaN NaN 
3  42.0 18.0002    NaN   NaN NaN 
+0

替換值謝謝你,夥計:) – jovicbg

相關問題