在更新pandas中的另一列时合并行

时间:2017-09-30 09:44:18

标签: python pandas dataframe

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

等等。

1 个答案:

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