python - 基于在“根”数据帧上创建的 groupby 创建新的较小的“子”数据帧
问题描述
我有一个这样的数据集:
Index Amount Currency
01.01.2018 25.0 EUR
01.01.2018 43.5 GBP
01.01.2018 463.0 PLN
02.01.2018 32.0 EUR
02.01.2018 12.5 GBP
02.01.2018 123.0 PLN
03.01.2018 10.0 PLN
03.01.2018 15.0 USD
我想创建一个函数,将这个数据帧拆分为按货币分组的子数据帧(存储在不同的变量中)。需要前。一个变量(数据框类型),它只有欧元货币,一个用于英镑货币,一个用于 PLN 货币,一个用于美元。
所以我想要这样的输出:
欧元:
Index Amount Currency
01.01.2018 25.0 EUR
02.01.2018 32.0 EUR
对于英镑:
Index Amount Currency
01.01.2018 43.5 GBP
02.01.2018 12.5 GBP
对于波兰兹罗提:
Index Amount Currency
01.01.2018 463.0 PLN
02.01.2018 123.0 PLN
03.01.2018 10.0 PLN
对于美元:
Index Amount Currency
03.01.2018 15.0 USD
主要问题是我正在寻找一条干净的代码来做到这一点。当然可以玩一些 for's 和 if's 但我的目标是获得一个简洁的代码。
PS。
是否可以在不声明货币变量的情况下做到这一点?我想避免为每种货币声明 40 个变量。因为这个例子被简化了,实际上 df 有大量的货币并且它们没有以任何方式排序,并且不是每天都有所有的货币。当然,这个 PS 只是对我的问题的优化,所以如果它不可能也没关系。
解决方案
字典理解将是这里的答案:
d = {a: b for a, b in df.groupby('Currency')}
推荐阅读
- xcode - 在 iOS 上我应该检查什么,并且我的本地化字符串没有被本地化?
- java - 0/1背包算法的解释
- typescript - 打字稿中变量之前的$$是什么?
- java - 从标准 Java 应用程序运行 Spring Boot jar
- mongodb - 是否可以在 mongo 中的每次单击时对 db 执行读取操作
- amazon-web-services - Apache Web 服务器在使用负载均衡器 dns 名称时工作,但不是 Route53 指向负载均衡器
- javascript - AmCharts v4 - 日期和线条问题
- javascript - 如何返回元素 React
- npm - 如何优化托管 node.js 包和发布?
- gluon-mobile - Gluon Mobile:低功耗蓝牙,扫描后如何连接到具有给定 MAC 地址的设备?