获取包含列中与其他数据帧中相应列中的值相近的值的数据帧行

问题描述 投票:0回答:1

我有两个数据帧,我正在尝试搜索每个数据帧中的事件,其中每个数据帧中的特定标记列下的两个值彼此接近,但我不知道如何执行此操作。我已经尝试了isin,但这似乎对我在这里尝试做的事情太有限了。

问题的关键点是接近。我不仅对价值完全相同的事件感兴趣。

DF1

   a 
0  10
1  100
2  1000
3  5000
4  6000

DF2

    a
0   1
1   150
2   800
3   1002
4   5997

假设我对df1和df2中的行感兴趣,其中a在彼此的±3范围内,那么我将如何得到一个仅限于那些具有相应的a值的行的数据帧,这样我就会得到

DF1

    a
2   1000
4   6000

DF2

    a
3   1002
4   5997

?

python pandas dataframe
1个回答
1
投票

这是一个简单的方法:

import numpy as np
import pandas as pd

THRESHOLD = 3
df1 = pd.DataFrame({'a': [10, 100, 1000, 5000, 6000]}, index=range(5))
df2 = pd.DataFrame({'a': [1, 150, 800, 1002, 5997]}, index=range(5))

m = np.abs(df1.a[:, np.newaxis] - df2.a[np.newaxis, :]) <= THRESHOLD
df1_close = df1[np.any(m, axis=1)]
df2_close = df2[np.any(m, axis=0)]

print('df1_close', df1_close, '', 'df2_close', df2_close, sep='\n')

输出:

df1_close
      a
2  1000
4  6000

df2_close
      a
3  1002
4  5997
© www.soinside.com 2019 - 2024. All rights reserved.