gpt4 book ai didi

python - 在两个数据框的两列中搜索唯一元素

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:25 26 4
gpt4 key购买 nike

从这里Displaying the unique elements from the two columns in two dataframe

data1 = {'date': ['1998', '1999','1999','2000','1999'], 
'node1': [1,1,2,3,3],
'node2': [3,4,3,4,8],
'weight': [1,1,1,1,1], }
df1 = pd.DataFrame(data1, columns = ['date', 'node1','node2','weight'])

data2 = {'date': ['2002','2001','2003','2002','2002','2001'],
'node1': [1,1,1,2,2,3],
'node2': [2,3,4,3,5,4],
'weight': [1,1,1,1,1,1], }
df2= pd.DataFrame(data2, columns = ['date', 'node1','node2','weight'])

我想搜索两个数据框中的两列 (node1,node2) 并显示两个数据框中唯一的节点。在此示例中,data1 中的 8 个和 data2 中的 5 个是数据帧中的唯一节点。

输出格式:

数据框 1:8

数据框 2:5

最佳答案

使用 merge 稍微修改一下之前的答案:

a = pd.DataFrame({'node':df1[['node1','node2']].values.ravel()})
b = pd.DataFrame({'node':df2[['node1','node2']].values.ravel()})

c = pd.merge(a, b, how='outer', indicator=True, on='node')
#
d = c.loc[c['_merge'] == 'left_only', ['node']]
print (d)
node
25 8

e = c.loc[c['_merge'] == 'right_only', ['node']]
print (e)
node
26 5

但如果性能很重要,请使用 numpy.setdiff1d :

a = df1[['node1','node2']].values.ravel()
b = df2[['node1','node2']].values.ravel()

d = np.setdiff1d(a,b)
print (d)
[8]

e = np.setdiff1d(b,a)
print (e)
[5]

关于python - 在两个数据框的两列中搜索唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46969291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com