我有一个 defaultdict:
dd = defaultdict(list,
{'Tech': ['AAPL','GOOGL'],
'Disc': ['AMZN', 'NKE'] }
Run Code Online (Sandbox Code Playgroud)
和一个看起来像这样的数据框:
AAPL AMZN GOOGL NKE
1/1/10 100 200 500 200
1/2/10 100 200 500 200
1/310 100 200 500 200
Run Code Online (Sandbox Code Playgroud)
我想要的输出是根据字典的值对数据框求和,以键为列:
TECH DISC
1/1/10 600 400
1/2/10 600 400
1/3/10 600 400
Run Code Online (Sandbox Code Playgroud)
pandas groupby 文档说,如果您传递字典,它会执行此操作,但我最终得到的只是使用以下代码的空 df:
df.groupby(by=dd).sum() ##returns empty df
Run Code Online (Sandbox Code Playgroud)
dict以正确的方式创建,您可以使用bywithaxis=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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |