代码之家  ›  专栏  ›  技术社区  ›  Nicholas

查找重复行(组合)并合并和求和

  •  0
  • Nicholas  · 技术社区  · 4 年前

    我有一个这样的示例数据帧:

    data = {'From': ['1', '1', '2', '2'],
            'To': ['2', '4', '1', '7'],
            'Total': [100, 100, 100, 100]
            }
    
    dataf = pd.DataFrame(data, columns = ['From', 'To', 'Total'])
    

    看起来像这样:

    enter image description here

    第一行和第三行是重复的,但顺序不同,即(1,2)和(2,1)。

    我想删除重复的行,但要将每一行剩下的值相加。

    即,该表看起来像这样:

    enter image description here

    我发现了一些帖子,讨论如何删除任何列顺序的重复内容(例如。 Grouping by multiple columns to find duplicate rows pandas ),但没有说明如何在删除之前对值求和。

    0 回复  |  直到 4 年前
        1
  •  1
  •   maria    4 年前

    尝试创建一些用于分组和求和的键:

    dataf['key'] = dataf.apply(lambda row: tuple(sorted((row['From'], row['To']))), axis=1)
    dataf = dataf.groupby('key')['Total'].sum().reset_index()
    dataf['From'] = dataf['key'].apply(lambda x: x[0])
    dataf['To'] = dataf['key'].apply(lambda x: x[1])
    del dataf['key']