我有一個資料框(df_validation),我在其中進行了一些驗證。如果一切正常,這應該是空的。如果沒有,將找到具有此類資訊的行
CHR START END
1 1000 2000 # Imagine this failed
現在,我想與另一個資料框 (df) 進行通信,驗證是可以的,除了出現在 df_validation 中的那些
這是df
CHR START END
1 1000 2000
2 1000 2000
3 1000 2000
4 1000 2000
5 1000 2000
這就是我想要的結果
CHR START END Pass_validation?
1 1000 2000 False
2 1000 2000 True
3 1000 2000 True
4 1000 2000 True
5 1000 2000 True
我怎樣才能做到這一點?第一個想法是合并兩者但具有相同的列名,它在左側添加一個“_X”,在右側添加一個“_Y”。我真的不需要新的右列,只是示例中的新列。
uj5u.com熱心網友回復:
想法是使用indicator=True輔助列的引數_merge和False不相等的匹配比較both。If is 省略on引數由兩個資料幀中的columnsname 的交集連接,CHRhereSTART和END。
df2['Pass_validation?'] = df2.merge(df_validation,
indicator=True,
how='left')['_merge'].ne('both')
print (df2)
CHR START END Pass_validation?
0 1 1000 2000 False
1 2 1000 2000 True
2 3 1000 2000 True
3 4 1000 2000 True
4 5 1000 2000 True
詳情:
print (df2.merge(df_validation, indicator=True, how='left'))
CHR START END _merge
0 1 1000 2000 both
1 2 1000 2000 left_only
2 3 1000 2000 left_only
3 4 1000 2000 left_only
4 5 1000 2000 left_only
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446260.html
