首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用迭代循环在两个数据帧之间减去,得到最小值

使用迭代循环在两个数据帧之间减去,得到最小值
EN

Stack Overflow用户
提问于 2020-02-08 20:14:32
回答 2查看 71关注 0票数 0

我有两个数据帧,其中包含以下内容:

DF1:一些与某些坐标相关的数据,n行:

代码语言:javascript
运行
复制
ID1  Lat1   Lon1
ID2  Lat2   Lon2
ID3  Lat3   Lon3
...
ID_n  Lat_n   Lon_n

DF2:与另一个坐标相关联的一些不同数据,s行:

代码语言:javascript
运行
复制
ID'1  Lat'1   Lon'1
ID'2  Lat'2   Lon'2
ID'3  Lat'3   Lon'3
...
ID'_s  Lat'_s   Lon'_s

请注意n!=s。

我需要做的是,使用python/pandas,对于DF1ID1,计算Lat1/Lon1和所有Lat‘1...Lat/Lon’1...Lon‘s之间的距离,并获得最小值。

距离的计算不是问题,问题是我如何实现迭代循环。下面是我需要的示例:

代码语言:javascript
运行
复制
ID    N
1     5
2     3
3     6
4     9

ID'    N'
1      2
2      4
3      1

结果将是:

代码语言:javascript
运行
复制
ID    Nmin
1     1 (5-4)
2    -1 (3-4)
3     2 (6-4)
4     5 (9-4)
EN

回答 2

Stack Overflow用户

发布于 2020-02-09 04:13:28

看起来您只需要找到DF2中的最大值,然后从DF1中的所有值中减去它。这是因为如果你在寻找最小值,你应该减去最大值。

因此,您可以只使用:

代码语言:javascript
运行
复制
DF1['N_min'] = DF1['N'] - DF2['N'].max()
票数 0
EN

Stack Overflow用户

发布于 2020-02-09 16:32:29

我自己也是一个初学者,但你的问题有点不清楚,我所理解的是你想要坐标之间的距离和最小值,现在为了将一个数据帧的纬度和经度值与另一个数据帧的最大纬度和经度相减,你想要迭代...所以...这是我尝试过的。

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

df1 = {
    'ID':['A','B','C','D'],
    'LAT':[1,2,3,4],
    'LONG':[5,6,7,8],
}

df2 = {
    'ID':['E','F','G'],
    'LAT':[9,10,11],
    'LONG':[12,13,14],
}

df1 = pd.DataFrame(df1)
df2 = pd.DataFrame(df2)

输出:

代码语言:javascript
运行
复制
  ID  LAT  LONG
0  A    1     5
1  B    2     6
2  C    3     7
3  D    4     8
  ID  LAT  LONG
0  E    9    12
1  F   10    13
2  G   11    14

现在为了迭代,我从答案here中得到了一点帮助

代码语言:javascript
运行
复制
for index, coor in df1.iterrows():
    print(coor['LAT'] - df2['LAT'].max(), coor['LONG'] - df2['LONG'].max())

输出将为:

代码语言:javascript
运行
复制
-10 -9
-9 -8
-8 -7
-7 -6

但我猜应用循环会使它变得复杂。您可以使用其他方法将其再次转换为数据帧,但我希望这对您有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60126679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档