python - Pandas:用一组行的总和替换它们

标签 python pandas

我确信有一种巧妙的方法可以做到这一点,但还没有找到它。

假设我有一个数据框:

f = pd.DataFrame({'A':[1, 2, 3, 4], 'B': [10, 20, 30, 40], 'C':[100, 200, 300, 400]}).T

即,行索引为 A、B 和 C。

现在假设我想获取 A 行和 B 行,并将它们替换为一行,即它们的总和;而且,此外,我想将给定的索引(例如“总和”)分配给该替换行(请注意索引的顺序并不重要)。

目前我必须做:

f.append(pd.DataFrame(f.ix[['A','B']].sum()).T).drop(['A','B'])

后面跟着同样笨重的东西来设置替换行的索引。但是,我很好奇是否有一种优雅的单行方法来完成这两个步骤?

最佳答案

这样做:

In [79]: f.append(f.loc[['A', 'B']].sum(), ignore_index=True).drop([0, 1]).set_index(Index(['C', 'sumAB'])
)
Out[79]:
         0    1    2    3
C      100  200  300  400
sumAB   11   22   33   44

或者,您可以使用 Index.get_indexer 来获得更丑陋的单行代码:

In [96]: f.append(f.loc[['A', 'B']].sum(), ignore_index=True).drop(f.index.get_indexer(['A', 'B'])).set_index(Index(['C', 'sumAB']))
Out[96]:
         0    1    2    3
C      100  200  300  400
sumAB   11   22   33   44

关于python - Pandas:用一组行的总和替换它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645023/

相关文章:

python - 从 Python 中的列表列表打印到文件

python - 如何使用CreateView? django.template.exceptions.TemplateDoesNotExist : django/forms/widgets/text. html

python - 使用 gmail 在 R 中通过电子邮件发送附件

python - 如何将一列中的文本拆分为多行?

python - pandas 获取具有特定值的行的列平均值?

python - 集合理解在 Python 中给出 "unhashable type"(列表集)

Python subprocess.Popen 作为 Windows 上的不同用户

python - 如何在 pandas 框架中按日期时间的月份进行汇总?

Python Pandas set_value 将显示整个数据框

python - 从 Pandas 系列中删除最小值