使用pandas中其他数据框的值覆盖数据框中的值
问题描述:
我有两个数据框。一个与网站的坐标,另一个与他们之间的连接。 例如:使用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 .. 说实话,我没有太多想法,我尝试了转换成字典,或者在合并时覆盖,但没有什么一直工作到最后。
答
这里有一种方法,从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
替换值谢谢你,伙计:) – jovicbg