2017-09-30 55 views
1
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 

从上面我要合并的行,其中节点1 ==节点2随时随地满足此条件时更新重量可以看出,这样只有一个行与唯一的节点1和节点2,权重是否等于条件的发生。合并行同时更新大熊猫另一列

示例输出:

node 1  node 2  weight 

    2   7    2 

    2   15    4 

等。

+0

请添加文本version.We不要想要图像 – Dark

+2

使用'df.groupby(['node1','node2'])['weight']。sum()' – Zero

回答

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总和与总比分FUNC作为总和

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透视表

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 

如果你想组次数多一次,然后使用过滤器第一则GROUPBY总和即

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)]