我有一个defaultdict:

dd = defaultdict(list,
        {'Tech': ['AAPL','GOOGL'],
         'Disc': ['AMZN', 'NKE']  }

和一个看起来像这样的数据框:
         AAPL AMZN GOOGL NKE
1/1/10   100  200  500   200
1/2/10   100  200  500   200
1/310    100  200  500   200

我想要的输出是根据字典的值对数据帧求和,键为列:
         TECH DISC
1/1/10   600  400
1/2/10   600  400
1/3/10   600  400

pandas groupby文档说,如果您通过字典,它将执行此操作,但是我最终得到的是使用以下代码的空df:
df.groupby(by=dd).sum()   ##returns empty df

最佳答案

以正确的方式创建dict,您可以将byaxis=1一起使用

# map each company to industry
dd_rev = {w: k for k, v in dd.items() for w in v}
# {'AAPL': 'Tech', 'GOOGL': 'Tech', 'AMZN': 'Disc', 'NKE': 'Disc'}

# group along columns
df.groupby(by=dd_rev,axis=1).sum()

Out[160]:
        Disc  Tech
1/1/10   400   600
1/2/10   400   600
1/310    400   600

关于python - Pandas 分组使用字典值,应用总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50789425/

10-12 16:05