【问题标题】:Merging duplicated indicies within a dataframe合并数据框中的重复索引
【发布时间】:2016-10-16 15:13:48
【问题描述】:

我有一个数据框,在清理和合并之后,它最终处于我有多行具有相同索引值的状态。

我需要合并这些重复的行并得到一个数据框,其中每次重复运行都有一行。

感觉这应该是处理数据帧时的标准操作,但我似乎无法弄清楚如何让 Pandas 做到这一点。

我找到的最佳答案在这里:Merge two rows in the same Dataframe if their index is the same?

但是,那里提出的解决方案以“groupby”对象而不是数据框结束。由于我想在框架上进行进一步的 groupby,所以我不知道如何进行。

pandas 方法中是否有一个标准函数用于压缩多行共享相同索引的数据帧,并返回一个新的数据帧?

例如:

           visits  revenue product-type
product1      200       50    stockings
product1       50      100         #n/a
product2      150       20          toy
     ...       ..       ..           ..

           visits  revenue product-type
product1      250      150    stockings
product2      150       20          toy
     ...       ..       ..           ..

【问题讨论】:

    标签: python-3.x pandas merge ipython


    【解决方案1】:

    您可以通过index groupby 然后aggregate

    print (df.groupby(level=0).agg({'visits':sum,'revenue':sum,'product-type':'first'}))
    
              visits  revenue product-type
    product1     250      150    stockings
    product2     150       20          toy
    

    也许最后一列更好的功能是join - 您的数据不会丢失,(first 只取第一个值,其他数据被删除):

    print (df.groupby(level=0).agg({'visits':sum,
                                   'revenue':sum,
                                   'product-type': lambda x: ''.join(x.fillna(''))}))
    
              visits  revenue product-type
    product1     250      150    stockings
    product2     150       20          toy
    

    如果仅使用sum,则删除最后一列 - automatic exclusion of nuisance columns

    print (df.groupby(level=0).sum())
              visits  revenue
    product1     250      150
    product2     150       20
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 2020-06-11
      • 2015-02-10
      • 1970-01-01
      • 2018-02-02
      相关资源
      最近更新 更多