使用Pandas中的列的唯一值创建DataFrame

时间:2017-05-09 20:04:54

标签: python pandas

我是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 中的每个唯一值,但我不知道这是否对我有帮助。

谢谢大家!

2 个答案:

答案 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')))