使用以下试验数据:函数在多个列匹配值
df2 = pd.DataFrame(np.random.randn(12, 3), columns=['A', 'B', 'C'])
thresh = .3
df2['matches'] = np.where(df2.A - df2.B < thresh,1,0)
我创建的df2['matches']
柱表示1
时df2.A - df2.B < thresh
的值。
A B C matches
0 0.501554 -0.589855 -0.751568 0
1 -0.295198 0.512442 0.466915 1
2 0.074863 0.343388 -1.700998 1
3 0.115432 -0.507847 -0.825545 0
4 1.013837 -0.007333 -0.292192 0
5 -0.930738 1.235501 -0.652071 1
6 -1.026615 1.389294 0.035041 1
7 0.969147 -0.397276 1.272235 0
8 0.120461 -0.634686 -1.123046 0
9 0.956896 -0.345948 -0.620748 0
10 -0.552476 1.376459 0.447807 1
11 0.882275 0.490049 0.713033 0
不过,我其实想比较这三个列,如果值是内thresh
它将返回匹配的df2['matches]
量相应的数字。因此,例如,如果Col A = 1,B = 2和C = 1.5且thresh为.5,则函数将在['matches']列中返回3。
有没有一个功能已经做了类似的事情或任何人都可以帮助吗?
谢谢@Andras迪克。也许我的问题有问题,但第10行显示了3个匹配,而1.260968和0.690971之间的差异> thresh。当数字之间的差值
ade1e
@adele查看我的最后一个代码块:我们的顺序是'('B','C')',所以我们计算'B'列减去'C'列,这对这种情况是负的。你可能希望它一路走去,通过交换在列表理解'k1'和'k2'(编辑;现在发电机的表情,里面'总和()');但最可能的情况是你需要差异的绝对值,而不是差异本身。你明白我的意思吗? –
你能告诉我如何得到差异的绝对值,我会看看如果这给出了我期待的结果,谢谢 – ade1e