使用pandas python

时间:2017-07-14 13:28:12

标签: python pandas dictionary dataframe merge

我有两个数据帧。一个具有站点坐标,另一个具有它们之间的连接。 例如:

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

现在我想用df1中的坐标改变df2中的所有值(在所有列中)。 期望的输出:

 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一起使用。 说实话,我没有太多的想法,我尝试过转换成字典,或者在合并时覆盖,但直到最后才真正有效。

1 个答案:

答案 0 :(得分: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