我有两个数据帧,我想基于一列中的等价性和第二列中的数字差来连接它们。
例如:
d = {'col1': [A, B], 'col2': [30, 40]}
df = pd.DataFrame(data=d)
d1 = {'col1': [A, B], 'col2': [35, 400]}
df1 = pd.DataFrame(data=d1)
col1 col2
0 A 30
1 B 40
col1 col2
0 A 35
1 B 400
有没有一种方法可以合并col1中的等价性;col2<10〃;?
我所讨论的唯一解决方案包括在col1上进行一般合并,并根据col2中的差异创建一个过滤器。
由于问题中没有定义预期的输出形状,所以我根据给定的条件垂直连接了两个数据帧。
d1 = {'col1': ["A", "B"], 'col2': [30, 40]}
df1 = pd.DataFrame(data=d1)
d2 = {'col1': ["A", "B"], 'col2': [35, 400]}
df2 = pd.DataFrame(data=d2)
out=pd.concat([df1,df2],axis=1,ignore_index = True)
out = out.rename(columns = {0: "df1_col1",1: "df1_col2",2: "df2_col1",3: "df2_col2"})
out = out[abs(out["df1_col2"] - out["df2_col2"]) <10]
print(out)
df1_col1 df1_col2 df2_col1 df2_col2
0 A 30 A 35