代码之家  ›  专栏  ›  技术社区  ›  Mohamed Thasin ah

如何在pandas中按交换值的两列进行分组?

  •  2
  • Mohamed Thasin ah  · 技术社区  · 6 年前

    例如 column 1 , column 2 (a,b) 在第一排 (b,a) 对于另一行,我想对这两个记录进行分组,并执行分组操作。

    输入:

    From    To  Count
    a1      b1  4
    b1      a1  3
    a1      b2  2
    b3      a1  12
    a1      b3  6
    

    输出:

    From    To  Count(+)
    a1      b1  7
    a1      b2  2
    b3      a1  18
    

    我尝试在交换元素后应用group by。但我没有办法解决这个问题。帮我解决这个问题。

    提前谢谢。

    1 回复  |  直到 6 年前
        1
  •  3
  •   jezrael    6 年前

    numpy.sort 对于每行的排序:

    cols = ['From','To']
    df[cols] = pd.DataFrame(np.sort(df[cols], axis=1))
    print (df)
      From  To  Count
    0   a1  b1      4
    1   a1  b1      3
    2   a1  b2      2
    3   a1  b3     12
    4   a1  b3      6
    
    df1 = df.groupby(cols, as_index=False)['Count'].sum()
    print (df1)
      From  To  Count
    0   a1  b1      7
    1   a1  b2      2
    2   a1  b3     18