按多列分组

2024-04-24 23:24:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe,我想根据“VALUE”列中的公共条目,在20个不同的列中汇总值

以下是我对一个专栏的操作方法:

df.groupby('VALUE').aggregate({'COUNT':numpy.sum},as_index=False)

有没有更好的方法可以扩展到我没有显式写出它们的名字的20列?一、 e,我想要一种只传递一个列名列表的方法。在

请看下面芭芭拉的回答,以获得一个可以用来说明这个问题的例子。在


Tags: 方法numpyfalsedataframedfindexvalueas
1条回答
网友
1楼 · 发布于 2024-04-24 23:24:38

您可以使用pandas组上的sub-notation选择要与列名列表相加的列。这就是你要找的吗?在

import numpy as np
import pandas as pd

data = {
    "dim1":  [np.random.choice(['foo', 'bar']) for _ in range(10)],
    "measure1":  np.random.random_integers(0, 100, 10),
    "measure2":  np.random.random_integers(0, 100, 10)
}

df = pd.DataFrame(data)
df

Out[1]:
  dim1  measure1  measure2
0  bar         9        86
1  bar        24        64
2  bar        47        46
3  foo        60        98
4  bar        94        53
5  foo        95        89
6  foo        98         9
7  bar         4        95
8  foo        63        66
9  foo        40        47

df.groupby(['dim1'])['measure1', 'measure2'].sum()

Out[2]:
      measure1  measure2
dim1
bar        178       344
foo        356       309

更新2015-01-02延迟回复以下评论,但迟做总比不回复好

如果不知道有多少列,但知道列命名约定,请构造列列表以动态聚合。有一种方法:

^{pr2}$

相关问题 更多 >