微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将二维数组映射到熊猫中的 x 和 y 坐标

如何解决将二维数组映射到熊猫中的 x 和 y 坐标

我有带有 x 和 y 坐标的二维数组和数据框 df,我想将二维数组的值映射到新列中数据框中相应的 xy 坐标

数组

data =

array([[0,0],[0,1,0]])

df =

    index   y   x   result
        0   4   8   NaN
        1   8   8   NaN
        2   8   4   NaN
        3   6   1   NaN
        4   5   3   NaN
        5   1   5   NaN
        6   6   6   NaN
        7   6   12  NaN
        8   8   3   NaN
        9   6   3   NaN
        10  5   10  NaN
        11  3   6   NaN
        12  2   5   NaN
        13  2   4   NaN
        14  5   7   NaN
        15  2   8   NaN
        16  1   8   NaN
        17  5   9   NaN
        18  6   2   NaN
        19  4   5   NaN
        20  4   10  NaN
        21  7   6   NaN
        22  2   1   NaN
        23  3   10  NaN
        24  5   1   NaN
        25  8   2   NaN
        26  1   4   NaN
        27  6   4   NaN
        28  1   7   NaN
        29  4   11  NaN
        30  8   9   NaN
        31  6   7   NaN
        32  3   7   NaN
        33  6   10  NaN
        34  1   10  NaN
        35  6   11  NaN
        36  7   7   NaN
        37  3   5   NaN
        38  3   11  NaN
        39  1   11  NaN
        40  6   9   NaN
        41  5   8   NaN
        42  1   12  NaN
        43  3   3   NaN
        44  5   12  NaN
        45  3   8   NaN
        46  6   5   NaN
        47  3   12  NaN
        48  3   4   NaN
        49  5   11  NaN
        50  2   9   NaN
        51  7   1   NaN
        52  7   5   NaN
        53  7   10  NaN
        54  8   10  NaN
        55  2   11  NaN
        56  2   12  NaN
        57  8   11  NaN
        58  7   11  NaN
        59  8   7   NaN
        60  7   9   NaN
        61  4   7   NaN
        62  4   12  NaN
        63  2   7   NaN
        64  1   6   NaN
        65  3   9   NaN
        66  4   9   NaN
        67  4   6   NaN
        68  1   2   NaN
        69  5   4   NaN
        70  8   1   NaN
        71  8   5   NaN
        72  2   3   NaN
        73  5   5   NaN
        74  8   6   NaN
        75  4   1   NaN
        76  1   9   NaN
        77  2   6   NaN
        78  7   8   NaN
        79  4   2   NaN
        80  5   2   NaN
        81  7   3   NaN
        82  2   2   NaN
        83  7   4   NaN
        84  4   3   NaN
        85  3   1   NaN
        86  1   1   NaN
        87  6   8   NaN
        88  1   3   NaN
        89  4   4   NaN
        90  7   2   NaN
        91  5   6   NaN
        92  3   2   NaN
        93  2   10  NaN
        94  7   12  NaN
        95  8   12  NaN

代码

 for y,x in np.ndindex(data.shape):
        for i,j in zip(df.x,df.y): 
            if (i - 1 ==  data[x]).all() & ( j - 1 ==  data[y]).all():
                df['result'] == result[x,y]

i-1j-1 已完成,因为 np 数组索引从 0 开始,但在 df 中它从 1 开始

输出

df =
  

        index   y   x   result
            0   4   8   0
            1   8   8   0
            2   8   4   0
            3   6   1   0
            4   5   3   0
            5   1   5   0
            6   6   6   0
            ......

解决方法

代码:

data_df = pd.DataFrame(data)
result = [data_df.loc[row['y']-1,row['x']-1] for index,row in df.iterrows()]
df['result'] = result
print(df)

输出:

    x   y   result  
0   4   8       0
1   8   8       0
2   8   4       0
3   6   1       0
4   5   3       0
.. ..  ..     ...
91  5   6       0
92  3   2       1
93  2  10       1
94  7  12       0
95  8  12       0
,

简单的解决方案是:

df['result'] = [data[coords['y']-1,coords['x']-1] for _,coords in df.iterrows()]

如果您需要效率,请使用 df.itertuples()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?