【发布时间】:2020-08-07 14:46:44
【问题描述】:
我得到了两个包含几列的数据框,但这三个具有相似的数据。
Df1:
ID Line ... Sta
19805 120 ... 30
19805 120 ... 40
19805 123 ... 30
. . . .
. . . .
19841 120 ... 30
Df2:
ID Line ... Sta
19805 122 ... 30
19805 119 ... 41
19805 123 ... 30
. . . .
. . . .
19841 120 ... 33
我想使用最接近 Df1 的匹配将两列添加到 Df2 与 Df1 的相同列
Df2:
ID Line ... Sta linedf1 stadf1
19805 122 ... 30 120 30
19805 119 ... 41 120 40
19805 123 ... 30 123 30
. . . . . .
. . . . . .
19841 120 ... 33 120 30
注意,匹配需要在 Df2["Line"]+-4 和 Df2["Sta"]+-4 的范围内
所以我尝试了这个:
Df1["line"].where((Df2['line']-4)<=Df1["line"]) & (Df1["line"]<=(Df2['line']+4)
Df1.loc[((Df2['line']-4)<=Df1["line"]) & ((Df1["line"]<=(Df2['line']+4))]
Df1[Df1["line"].between((Df2['line']-4),(Df2['line']+4), inclusive= True)]
但所有这些都会导致此错误
ValueError: Can only compare identically-labeled Series objects
任何人都知道如何实现这一目标? 希望这个问题不要太含糊
【问题讨论】:
标签: python pandas dataframe range