2016-10-25 6 views
2

여러 개의 열이 범주 데이터를 나타내는 데이터 프레임이 있습니다. 나는 각 조합에 따라 그것을 나누고 싶다.복수의 데이터 프레임으로 팬더 데이터 프레임 분할

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 

내가 즉, 처음 세 변수 중 하나 개 조합의 모든 항목을 포함하는 하나의 dataframe,하고 싶은 : 아래는 내가 무슨의 단순화 된 버전입니다

  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

는 DFS를 분할해야합니까? group = gp.groupby ([ 'existing', 'priority', 'State']) groups = gp.groups' 그룹을 얻으면'gp '를 사용하여 각 그룹을 얻을 수 있습니다. get_group (group_name) ' – EdChum

+0

분할해야합니다. 의도는 분할 된 후에 주문하고 순서에 따라 작업을 수행하는 것입니다. 분할은 동일한 그룹에 속하지 않는 두 행 사이의 조작, 즉 "N, N, CA"행에서 "Y, N, FL"행을 빼는 것을 방지합니다. – AnthonySCaldera

답변

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 
+0

고맙습니다. @piRSquared. 아직도 이것에 새롭고 내 머리 속에있는 것이 종종 정확한 코딩과는 거리가 멀다. 매우 감사! – AnthonySCaldera

관련 문제