我有一个Pandas DataFrame形式
df = pd.DataFrame({'1':['a','b','c'], '2':['b','a','d'], '3':['0.7','0.6','0.1']}).
我想在此DataFrame中添加一列,其中包含存在特定行的次数,而无需考虑顺序(因为前两列是无向图的节点)。此外,我想合并仅针对前两列的顺序而不同的行,并取第三列中数字的平均值。在这种情况下,应该是
df = pd.DataFrame({'1':['a','c'], '2':['b','d'], '3':['0.65','0.1'], '4':['2','1']}).
还要考虑到DataFrame包含超过100.000行。
答案 0 :(得分:0)
使用-
a=df[['1','2']].values
a.sort(axis=1)
df[['1','2']] = a
df.groupby(['1','2'])['3'].agg(['count','mean']).reset_index()
输出
1 2 count mean
0 a b 2 0.65
1 c d 1 0.10
或
df[['1','2']] = df[['1','2']].sort_values(1,axis=1)
df.groupby(['1','2'])['3'].agg(['count','mean']).reset_index()