我在熊貓數據框中有兩列 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列交換的相同條件。
添加回答
舉報
0/150
提交
取消