我在 Pandas 中有一個 DataFrame,我想在其中檢查幾列中的任何一列是否等于其他幾列。例如:
mydf = pd.DataFrame({'a1': [1, 2, 3, 4, 5], 'a2': [6, 7, 8, 9, 10], 'a3': [2, 3, 4, 5, 6], 'b1': [1, 7, 2, 3, 4], 'b2': [8, 9, 4, 2, 2], 'b3': [1, 3, 3, 3, 5]})
a1 a2 a3 b1 b2 b3
0 1 6 2 1 8 1
1 2 7 3 7 9 3
2 3 8 4 2 4 3
3 4 9 5 3 2 3
4 5 10 6 4 2 5
我想檢查是否有任何 'a' 列等于任何生成此 DataFrame 的 'b' 列:
a1 a2 a3 b1 b2 b3 x
0 1 6 2 1 8 1 1
1 2 7 3 7 9 3 1
2 3 8 4 2 4 3 1
3 4 9 5 3 2 3 0
4 5 10 6 4 2 5 1
有沒有很好的方法來做到這一點?我目前只知道一種非常討厭的回圈方式。非常感謝。
uj5u.com熱心網友回復:
一種方法是使用串列理解:
print ([any(set(x)&set(y)) for x, y in zip(df.filter(like="a").values, df.filter(like="b").values)])
[True, True, True, False, True]
uj5u.com熱心網友回復:
我們可以使用 numpy 廣播來比較這些值:
a = mydf.filter(like='a').to_numpy()
b = mydf.filter(like='b').to_numpy()
mydf['x'] = (a[None, :].T == b).any(2).any(0)
a1 a2 a3 b1 b2 b3 x
0 1 6 2 1 8 1 True
1 2 7 3 7 9 3 True
2 3 8 4 2 4 3 True
3 4 9 5 3 2 3 False
4 5 10 6 4 2 5 True
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331173.html
上一篇:在R中使用行號進行采樣
