python-3.x - 合并数据框中的重复索引

标签 python-3.x pandas merge ipython

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

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

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

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

但是,那里提出的解决方案最终以“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
     ...       ..       ..           ..

最佳答案

您可以groupby通过 index 然后 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

关于python-3.x - 合并数据框中的重复索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836553/

相关文章:

python-3.x - 如何在 Pandas DataFrame 的 apply() 中使用 DateTimeIndex 作为命名函数的输入

python - Heroku 部署失败 : pip. _vendor.packaging.requirements.InvalidRequirement : Invalid requirement, "' 版本解析错误'"

python - 如何在不重复代码的情况下定义 randint 的元组?

python - Pandas 修剪数据帧中的前导和尾随空格

在c中找不到这个合并排序程序的错误..总是显示段错误

python - 在 Pandas DF 中使用删除重复项,但根据首选项列表选择保留列

python - Pandas 中基于行计算的有效方法

python - 从数据框单元格中的字符串中删除单词/字符?

Git:有没有一种快速的方法可以查看上次在当前工作分支上执行 git merge master 是什么时候?

c# - 如何在 LinQ 中合并多个集合