2014-11-06 7 views
0

을 분할하는 방법 내가 하위 섹션의 지정된 수에이 분할 할 수 있습니다 방법 안양팬더 파이썬 DataFrames가 : dataframes

df = pd.DataFrame(np.random.randn(11,3)) 

      0   1   2 
0 0.102645 -1.530977 0.408735 
1 1.081442 0.615082 -1.457931 
2 1.852951 0.360998 0.178162 
3 0.726028 2.072609 -1.167996 
4 -0.454453 1.310887 -0.969910 
5 -0.098552 -0.718283 0.372660 
6 0.334170 -0.347934 -0.626079 
7 -1.034541 -0.496949 -0.287830 
8 1.870277 0.508380 -2.466063 
9 1.464942 -0.020060 -0.684136 
10 -1.057930 0.295145 0.161727 

을 가지고, 지금은이 말을 할 수 있습니다. 이

  0   1   2 
0 0.102645 -1.530977 0.408735 
1 1.081442 0.615082 -1.457931 
2 1.852951 0.360998 0.178162 
3 0.726028 2.072609 -1.167996 
4 -0.454453 1.310887 -0.969910 

      0   1   2 
5 -0.098552 -0.718283 0.372660 
6 0.334170 -0.347934 -0.626079 
7 -1.034541 -0.496949 -0.287830 
8 1.870277 0.508380 -2.466063 
9 1.464942 -0.020060 -0.684136 
10 -1.057930 0.295145 0.161727 

같은

뭔가 이상적으로는 (DF, 2)하지만이 아니 배열로 오류가 발생합니다 np.array_split를 사용하고 싶습니다.

내장 기능이 있나요? 특별히 df.loc [a : b]를 사용하고 싶지는 않습니다. 왜냐하면 필요한 하위 데이터 프레임 수에 따라 시작과 끝을 계산하기가 어렵 기 때문입니다.

답변

1

다음을 시도해보십시오. 연결된 경우 n 개의 하위 데이터 프레임의 배열을 반환해야합니다 문제의 원래 데이터 프레임을 반환합니다.

import math 

def split(df, n): 
    size = math.ceil(len(df)/n) 
    return [ df[i:i + size] for i in range(0, len(df), size) ] 
+0

감사합니다.하지만 남은 부분은 문제입니다. 내 DF에 대한 Split (df, 2)는 3 개의 하위 dfs를 반환합니다. np.arry_split()을 사용하여 나머지를 자동으로 처리하는 방법은 없습니다. –

+0

파이썬 2.x를 사용한다면'size = math.ceil (float (lf (df))/n)'크기를 계산할 라인을 변경해보십시오.' – mtadd

+0

당신이 한 일을 잘 모르지만 잘 작동합니다. , 더 많은 테스트를 해보고 감사하다는 말을 들려줍니다! –