node1 node2 weight
2 6 1
2 7 1
2 7 1
2 8 1
2 15 1
2 15 1
2 15 1
2 15 1
从上面可以看出,我想合并node1 == node2的行,并在满足此条件的地方更新权重,以便只有一行具有唯一的节点1和节点2,权重为no出现平等条件。
示例输出为:
node 1 node 2 weight
2 7 2
2 15 4
等等。
答案 0 :(得分:2)
如果您有像
这样的数据框node1 node2 weight 0 2 6 1 1 2 7 1 2 2 7 1 3 2 8 1 4 2 15 1 5 2 15 1 6 2 15 1 7 2 15 1
选项1: groupby sum
df.groupby(['node1','node2']).sum().reset_index()
node1 node2 weight 0 2 6 1 1 2 7 2 2 2 8 1 3 2 15 4
选项2 使用agg func作为总和
的数据透视表df.pivot_table(index=['node1','node2'],aggfunc=sum).reset_index()
node1 node2 weight 0 2 6 1 1 2 7 2 2 2 8 1 3 2 15 4
如果您希望组出现次数更多,则先使用过滤器,然后使用group by sum
ndf = df.groupby(['node1','node2']).filter(lambda x : len(x) > 1)
ndf = ndf.groupby(['node1','node2']).sum().reset_index()
node1 node2 weight 0 2 7 2 1 2 15 4
或
ndf = df.groupby(['node1','node2']).sum().reset_index()
ndf[ndf['weight'].ne(1)]