熊猫:在两列中计算值而不考虑顺序

时间:2018-12-01 08:43:45

标签: python pandas dataframe

我有一个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行。

1 个答案:

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