亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查兩列之間的一對一關系

檢查兩列之間的一對一關系

慕斯709654 2021-09-11 10:04:25
我在熊貓數據框中有兩列 A 和 B,其中的值重復多次。對于 A 中的唯一值,B 也有望具有“另一個”唯一值。并且A的每個唯一值在B中都有一個對應的唯一值(參見下面兩個列表形式的示例)。但是由于每列中的每個值都重復多次,我想檢查兩列之間是否存在任何一對一的關系。Pandas 中是否有任何內置函數來檢查?如果沒有,是否有一種有效的方法來完成這項任務?例子:A = [1, 3, 3, 2, 1, 2, 1, 1]B = [5, 12, 12, 10, 5, 10, 5, 5]這里,對于 A 中的每個 1,B 中對應的值總是 5,沒有別的。同樣,對于 2-->10,對于 3-->12。因此,A 中的每個數字在 B 中只有一個/唯一對應的數字(沒有其他數字)。我稱之為一對一的關系?,F在我想檢查熊貓數據框中的兩列之間是否存在這種關系。不滿足此關系的示例:A = [1, 3, 3, 2, 1, 2, 1, 1]B = [5, 12, 12, 10, 5, 10, 7, 5]這里,A 中的 1 在 B 中沒有唯一對應值。它有兩個對應值 - 5 和 7。因此,不滿足關系。
查看完整描述

1 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

考慮你有一些數據框:


 d = df({'A': [1, 3, 1, 2, 1, 3, 2], 'B': [4, 6, 4, 5, 4, 6, 5]})

dhasgroupby方法,它返回GroupByobject。例如,這是按相等的列值對某些行進行分組的界面。


 gb = d.groupby('A')

 grouped_b_column = gb['B']

在分組行上,您可以執行聚合。讓我們在每個組中找到最小值和最大值。


res = grouped_b_column.agg([np.min, np.max])


>>> print(res)

   amin  amax

A            

1     4     4

2     5     5

3     6     6

現在我們只需要檢查amin和amax在每個組中是否相等,因此每個組都由相等的B字段組成:


res['amin'].equals(res['amax'])

如果這個檢查沒問題,那么對于每個A你都有唯一的B. 現在您應該檢查A和B列交換的相同條件。


查看完整回答
反對 回復 2021-09-11
  • 1 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號