将pandas数据帧拆分为多个数据帧

时间:2016-10-25 15:59:11

标签: python pandas dataframe split

我有一个数据框,其中几列代表分类数据。我想根据每种组合将其拆分。以下是我所拥有的简化版本:

In [394]: df.head(10)
Out[394]: 
         existing  priority  State payment
0               Y         N     FL    10.4
1               N         N     CA   918.0
2               Y         N     CA   493.0
3               Y         N     FL   743.2
4               Y         Y     CA   898.0
5               N         N     CA  -237.0
6               Y         Y     CA   510.0
7               N         N     CA  -480.0
8               Y         N     FL  -125.0
9               Y         Y     CA   211.0

我想有一个数据框,其中包含前三个变量的一个组合的所有条目,即:

         existing  priority  State payment
0               Y         N     FL    10.4
1               Y         N     FL   743.2
2               Y         N     FL  -125.0

......之后的每个组合......

         existing  priority  State payment
0               N         N     CA   918.0
1               N         N     CA  -237.0
2               N         N     CA  -480.0

...等。有没有办法做到这一点?命名约定是否可以自动化,因此它包含每个变量组合的名称?

如果我在这里提出的要求有任何含糊之处,请告诉我,并提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

@EdChum是正确的。很难想象你想象的是适当的分裂。

@EdChum的回答

cols = ['existing', 'priority', 'State']
grps = df.groupby(cols)
gnms = grps.groups.keys()
grpd = grps.apply(pd.DataFrame.reset_index, drop=True)

for name in gnms:
    print('\n{}\n\n{}\n'.format(name, grpd.loc[name]))

('Y', 'N', 'FL')

  existing priority State  payment
0        Y        N    FL     10.4
1        Y        N    FL    743.2
2        Y        N    FL   -125.0


('Y', 'Y', 'CA')

  existing priority State  payment
0        Y        Y    CA    898.0
1        Y        Y    CA    510.0
2        Y        Y    CA    211.0


('Y', 'N', 'CA')

  existing priority State  payment
0        Y        N    CA    493.0


('N', 'N', 'CA')

  existing priority State  payment
0        N        N    CA    918.0
1        N        N    CA   -237.0
2        N        N    CA   -480.0