大Pandas普查区野外旅游调查数据中随机长/横向点的合并

2024-10-01 04:52:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一点地理信息系统的经验,我现在正努力学习熊猫。任何帮助都将不胜感激。这里的目标是将一个点连接到一个人。在

我尝试过merge和join,但这并没有给我正确的输出,太多的值。我尝试过使用drop重复和独特的方法来按摩合并输出,但到目前为止还没有任何运气。我已经阅读了合并文档,我觉得有一个简单的方法可以做到这一点…但到目前为止我还没有找到它。在

以下是我的数据和期望输出的示例。在

谢谢你的帮助!在

集合1

    XCORD        YCORD       DTRACT
    -74.630496   40.530064   34035053804
    -74.637525   40.557955   34035053804
    -74.628739   40.528239   34035053804
    -74.638959   40.533796   34035053804
    -74.638852   40.510520   34035053804
    -74.638853   40.510527   34035053810
    -74.638858   40.510514   34035053810

设置2

^{pr2}$

期望输出

     XCORD       YCORD       DTRACT        PLSAM
    -74.630496   40.530064   34035053804   30000560102
    -74.637525   40.557955   34035053804   30000560103
    -74.628739   40.528239   34035053804   30000560104
    -74.638959   40.533796   34035053804   30000560105
    -74.638852   40.510520   34035053804   30000560106
    -74.638853   40.510527   34035053810   30000560107
    -74.638858   40.510514   34035053810   30000560108

另外,我的任务背景是在每个人口普查块中生成适当数量的随机点,并将它们连接回旅游调查数据,以便在点可视化工具中可视化。在


Tags: 数据方法文档示例目标可视化经验merge
3条回答

熊猫合并文件的签名:

merge(left, right, how='left', on=None, left_on=None, right_on=None,
  left_index=False, right_index=False, sort=True,
  suffixes=('_x', '_y'), copy=True)

你试过运行这个吗?在

^{pr2}$

如果这不起作用,最有可能的问题是指数不匹配。我的建议是将每个数据帧的索引设置为DTRACT列,然后继续进行合并。在

我认为这比你想象的要简单得多,merge和join在你的例子中不起作用的原因是,虽然你有一个公共列,但值不是唯一的,如果两个数据帧的索引相同,但在你的例子中,它们似乎不一样,这就不是问题了。在

最简单、最简单的方法是将列从set2添加到set1,如下所示:

set1['PLSAM'] = set2['PLSAM']

这假设两个数据帧之间的顺序匹配,在您的情况下看起来是真的,或者您当然可以先对它们进行排序,使它们处于相同的顺序。在

忘掉merge。可能是因为我使用了很多数据库,但我更喜欢dataframe的join方法,而且我更喜欢为每个数据帧定义索引。像这样:

In [97]: df1 = pandas.DataFrame(np.random.normal(size=(5,2), loc=30), columns=['x','y'], index=list('abcde'))

In [98]: df1.index.name = 'DTRACT'

In [99]: df1
Out[99]:
                x          y
DTRACT
a       29.804012  28.999263
b       29.933187  29.602694
c       29.269713  28.577094
d       29.857837  29.634982
e       29.751243  29.020471

In [100]: df2 = pandas.DataFrame(np.random.random_integers(0, high=20, size=(5,2)), columns=['A', 'B'], index=list('bcdef'))

In [101]: df2.index.name = 'DTRACT'

In [102]: df2
Out[102]:
         A   B
DTRACT
b        9  12
c       16   1
d       19  20
e       11  20
f       10  15

In [103]: df1.join(df2, how='outer')
Out[103]:
                x          y   A   B
DTRACT
a       29.804012  28.999263 NaN NaN
b       29.933187  29.602694   9  12
c       29.269713  28.577094  16   1
d       29.857837  29.634982  19  20
e       29.751243  29.020471  11  20
f             NaN        NaN  10  15

希望这能有所帮助。在

相关问题 更多 >