python - pandas groupby 使用字典值,应用 sum
问题描述
我有一个默认字典:
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
,您可以使用by
withaxis=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
推荐阅读
- typescript - 使用 TypeScript 中的类型定义对象键的前缀
- c# - 在 aws eb 上存储 asp.net core 2 的连接字符串
- java - 如何在响应式范式中处理另一个休息服务时调用休息服务?
- phpunit - 如何完全控制 MockObject 的行为?
- shell - shell脚本中的剪切命令
- android - 错误:此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 6.0 不兼容
- angular - 使用异步管道订阅 Observable 时如何处理 ExpressionChangedAfterItHasBeenCheckedError?
- reactjs - 如何在 React Native 中检查 null 条件
- reactjs - 删除复选框时反应如何修复,列表中的下一个在不应该时出现选中
- javascript - 如何通过动态表单获取选定 ID 的列?