[英]How do I compare the two data frames and get the values?
该符号有些混乱,但我在问题的符号之后采用了它。
一种方法是将您的数据帧合并到一个新的数据帧中,如下所示:
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.