我是Python和Pandas的新手,我遇到了解决问题的麻烦,我有一个带有多个变量的DF,如下例所示:
SRC Data1 Data2 AAA 180 122 BBB 168 121 CCC 165 147 DDD 140 156 EEE 152 103 AAA 170 100 CCC 166 112 DDD 116 155 EEE 179 119
我期待的是:
DF_A
SRC Data1 Data2 AAA 180 122 AAA 170 100
DF_B
SRC Data1 Data2 BBB 168 121
我需要为 SRC 中的每个值创建一个DF,并在 Data1 和 Data2 中携带各自的数据
我已经使用pd.DataFrame(Example.SRC.unique())并获取 SRC 中的每个唯一值,但我不知道这是否对我有帮助。
谢谢大家!
答案 0 :(得分:7)
执行此操作的简洁方法是dict(iter(g))
:
In [11]: g = df.groupby("SRC", as_index=False)
In [12]: d = dict(iter(g))
In [13]: d
Out[13]:
{'AAA': SRC Data1 Data2
0 AAA 180 122
5 AAA 170 100, 'BBB': SRC Data1 Data2
1 BBB 168 121, 'CCC': SRC Data1 Data2
2 CCC 165 147
6 CCC 166 112, 'DDD': SRC Data1 Data2
3 DDD 140 156
7 DDD 116 155, 'EEE': SRC Data1 Data2
4 EEE 152 103
8 EEE 179 119}
In [14]: d["AAA"]
Out[14]:
SRC Data1 Data2
0 AAA 180 122
5 AAA 170 100
您可以在不复制的情况下拉出子组:
In [21]: g.get_group("AAA")
Out[21]:
SRC Data1 Data2
0 AAA 180 122
5 AAA 170 100
注意:您可以使用g.groups.keys()
获取可重复的密钥。
答案 1 :(得分:3)
我生成DF字典:
In [247]: dfs = {n:g for n,g in df.groupby('SRC')}
In [248]: dfs['AAA']
Out[248]:
SRC Data1 Data2
0 AAA 180 122
5 AAA 170 100
In [249]: dfs['BBB']
Out[249]:
SRC Data1 Data2
1 BBB 168 121
In [253]: dfs.keys()
Out[253]: dict_keys(['EEE', 'DDD', 'CCC', 'BBB', 'AAA'])
实现同样目标的更好方法:
dfs = dict(tuple(df.groupby('SRC')))