使用以下試驗數據:函數在多個列匹配值
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