根据映射汇总特定列

时间:2019-01-18 08:56:15

标签: python-3.x pandas pandas-groupby

我有一个包含映射的系列:

serm = pd.Series(
data={'ARD1': 53, 'BUL1': 37, 
'BUL2': 37, 'BSR1': 49, 'BTR1': 53, 'CR1': 53,
'CRR1': 53, 'CRE3': 53,'TAB1': 52, 'NEP1': 42, 'HAL1': 42})

将资产ID(索引)映射到区域(值)。 我有以下数据框,其中serm索引是列名。

data=pd.DataFrame(data={'ARD1': {0: 4.0, 1: 2.0, 2: 2.0, 3: 3.0, 4: 2.0},
'BUL1': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0},
'BUL2': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0},
'BSR1': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0},
'BTR1': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0},
'CR1': {0: 15.0, 1: 13.0, 2: 13.0, 3: 11.0, 4: 13.0},
'CRR1': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0},
'CRE3': {0: 8.0, 1: 10.0, 2: 9.0, 3: 10.0, 4: 11.0},
'TAB1': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0},
'NEP1': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0},
'HAL1': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}})

我想根据data的映射求和属于同一区域的serm的列。我该如何实现(pandanoic越多越好)

1 个答案:

答案 0 :(得分:1)

Index.map与每列groupby一起使用,并汇总[ApiController] public abstract class MyBaseController { }

sum

或向后分配列并使用sum

df = data.groupby(data.columns.map(serm.get), axis=1).sum()
print (df)
    37   42   49   52    53
0  0.0  0.0  0.0  0.0  27.0
1  0.0  0.0  0.0  0.0  25.0
2  0.0  0.0  0.0  0.0  24.0
3  0.0  0.0  0.0  0.0  24.0
4  0.0  0.0  0.0  0.0  26.0