首页 > 解决方案 > 基于在“根”数据帧上创建的 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 只是对我的问题的优化,所以如果它不可能也没关系。

标签: pythonpandasdataframe

解决方案


字典理解将是这里的答案:

d = {a: b for a, b in df.groupby('Currency')}

推荐阅读