【问题标题】:Finding duplicate rows (combinations) and merge and sum [duplicate]查找重复行(组合)并合并和求和 [重复]
【发布时间】:2021-01-27 19:14:44
【问题描述】:

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

data = {'From': ['1', '1', '2', '2'],
        'To': ['2', '4', '1', '7'],
        'Total': [100, 100, 100, 100]
        }

dataf = pd.DataFrame(data, columns = ['From', 'To', 'Total'])

看起来像这样:

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

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

即表格如下所示:

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

【问题讨论】:

  • 我已经准备好在它关闭之前发布一个答案,让你得到结果。如果您需要,请告诉我,它有效。
  • 谢谢 sophods,要检查 Marias 的答案,如果我这样做会告诉你 :) 编辑:Marias 的答案可以满足我的需要。不过感谢您的帮助!

标签: python pandas


【解决方案1】:

尝试为分组和求和创建一些键:

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']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-03
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2016-07-21
    相关资源
    最近更新 更多