我有一个带有一些变量的数据帧df1
,给定了某些值a:
df1 = pd.DataFrame({"A": [110.035,110.078,110.732,112.828,112.930],
"var1": np.random.random(5),
"var2":np.random.random(5)})
A var1 var2
0 110.035 0.500537 0.571497
1 110.078 0.234550 0.732815
2 110.732 0.337149 0.098250
3 112.828 0.190261 0.366118
4 112.930 0.990539 0.892640
数据帧df2
的值
df2 = pd.DataFrame({"A": [110.04, 112.83]})
A
0 110.04
1 112.83
现在我想保留df1中所有最接近df2中某个值的值,并删除所有其他值。在我的示例中,我只想保留第0行和第3行。你知道吗
我的想法是构建绝对差异并使用argsort():
(df1.A-x).abs().argsort()[:1]
但这只适用于一个值x
,如何将其扩展到df2中的所有值?你知道吗
Op1
numpy.searchsorted
使用
numpy.searchsorted
,然后使用索引片df1
Op2
merge_asof
将
reindex
与method='nearest'
一起使用:如果要返回原始的
A
值,请使用df1
执行第二个merge
步骤:相关问题 更多 >
编程相关推荐