繁体   English   中英

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

[英]Split pandas dataframe into multiple dataframes

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

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

...等等。 有什么办法吗? 命名约定是否可以自动化,以便包含每个变量组合的名称?

让我知道我在这里提出的任何疑问,并在此先感谢您的帮助!

@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM