繁体   English   中英

如何比较两个数据框并获取值?

[英]How do I compare the two data frames and get the values?

x 数据框 y 数据框

x 数据框是关于出发和到达的信息,y 数据框是每个位置的经纬度数据。

我尝试使用起点和终点的纬度和经度数据(例如,start_x、start_y、end_x、end_y)来计算起点和终点之间的距离。

如何连接 x 和 y 以将适合每个代码的纬度数据带入 x 数据框?

该符号有些混乱,但我在问题的符号之后采用了它。

一种方法是将您的数据帧合并到一个新的数据帧中,如下所示:

虚拟数据帧:

import pandas as pd

x=[300,500,300,600,700]
y=[400,400,700,700,400]

code=[300,400,500,600,700]

start=[100,101,102,103,104]

end=[110,111,112,113,114]

x={"x":x, "y":y}

y={"code":code, "start":start, "end":end}

x=pd.DataFrame(x)

y=pd.DataFrame(y)

这给出了:

x
X 是的
0 300 400
1 500 400
2 300 700
3 600 700
4 700 400
y
代码 开始 结尾
0 300 100 110
1 400 101 111
2 500 102 112
3 600 103 113
4 700 104 114

解决方案:

df = pd.merge(x,y,left_on="x",right_on="code").drop("code",axis=1)

df
X 是的 开始 结尾
0 300 400 100 110
1 300 700 100 110
2 500 400 102 112
3 600 700 103 113
4 700 400 104 114
df = df.merge(y,left_on="y",right_on="code").drop("code",axis=1)

df
X 是的 开始_x end_x start_y end_y
0 300 400 100 110 101 111
1 500 400 102 112 101 111
2 700 400 104 114 101 111
3 300 700 100 110 104 114
4 600 700 103 113 104 114

快速解释:

df = pd.merge(...) 行通过合并“x”列的左侧 (x) 和“代码”列的右侧 (x) 来创建新的 dataframe。 第二行 df = df.merge(...) 将现有的 df 作为左侧,并使用其列“y”合并来自 y dataframe 的“代码”列。

.drop("code",axis=1) 用于删除合并产生的不需要的“code”列。

合并具有相同列名的数据框时,会自动添加 _x 和 _y 后缀。 要控制它,在调用第二次合并时使用“suffixe=..”选项(当合并同名列时)。 在这种情况下,它可以在默认设置下正常工作,因此如果您使用 x 作为右侧数据帧和 y 作为左侧数据帧,则无需为此烦恼。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM