我有一个像这样的数据集:
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
我想创建一个函数,该函数将将此数据帧拆分为按货币分组的子数据帧(存储在不同的变量中)。需要前。一个变量(数据框类型),仅包含EUR货币,一个包含GBP货币,一个包含PLN货币,一个包含USD。
所以我想要这样的输出:
欧元:
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
对于PLN:
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和if,但是我的目标是获得一个简洁的代码。
PS。
是否可以在不声明货币变量的情况下做到这一点? 我想避免为每种货币声明40个变量。因为此示例已简化,并且实际上df具有大量货币,所以它们没有以任何方式进行订购,并且并非每天都有所有货币。 当然,此PS只是对我的问题的一种优化,因此,如果不可能的话,没关系。
答案 0 :(得分:2)
字典理解将是答案:
ManyToManyField
答案 1 :(得分:2)
您可以https://www.geeksforgeeks.org/python-find-smallest-element-greater-than-k/,从返回的tuple
/ key
对中构建value
并构建字典:
dfs = dict(tuple(df.groupby('Currency')))
您可以使用Currency
字段(现在为字典的keys
)中的不同值来访问不同的元素:
print(dfs['EUR'])
Index Amount Currency
0 01.01.2018 25.0 EUR
3 02.01.2018 32.0 EUR
print(dfs['USD'])
Index Amount Currency
7 03.01.2018 15.0 USD