2016-08-04 2 views
2

저는 이름, 성 및 직책이 혼합 된 엑셀이 있습니다. 관찰 할 수있는 패턴은 - 각 3 세트의 행에서 첫 번째 행은 이름이고, 두 번째 행은 성이며 세 번째 행은 직책입니다. 나는이 데이터 샘플 데이터를 3 개의 열을 만들고 및 분리 할 :하나의 열에서 세 개의 열로 데이터를 분리하십시오.

John 
Bush 
Manager 
Katrina 
Cohn 
Secretary 

내가 원하는 : 존, 부시, 한 행은 이름, 각각 마지막 이름과 직위에 따라 세 가지 다른 열 예정으로 관리자. 마찬가지로 -

First Name Last Name Job Title 
John   Bush   Manager 
Katrina  Cohn   Secretary 

이 작업을 어떻게 수행 할 수 있습니까?

답변

0
s = pd.Series([ 
     'John', 
     'Bush', 
     'Manager', 
     'Katrina', 
     'Cohn', 
     'Secretary']) 

df = pd.DataFrame(s.values.reshape(-1, 3), 
        columns=['First Name', 'Last Name', 'Job Title']) 

df 

enter image description here


데이터의 당신의 길이가 3의 복수 다음과 같이 그것을 강제 할 수없는 경우 :

s = pd.Series([ 
     'John', 
     'Bush', 
     'Manager', 
     'Katrina', 
     'Cohn', 
     'Secretary', 
     'Bogus']) 

s_ = s.iloc[:s.shape[0] // 3 * 3] 
df = pd.DataFrame(s_.values.reshape(-1, 3), columns=['First Name', 'Last Name', 'Job Title']) 

df 

enter image description here

+0

ValueError를해야합니다 : 새로운 배열의 전체 크기는 변경되지 – ComplexData

+0

당신의 시리즈를 의미 user6461192 @ 3. 편집을 참조하십시오 게시물의 배수 인 길이 아니다해야합니다. – piRSquared

+0

고마워요. 입력으로 Excel을 사용해야하는 경우 대신 – ComplexData

3

this notation을 사용하면 시작점이 다른 모든 세 번째 요소를 가져올 수 있습니다.

l = ['John', 'Bush', 'Manager', 'Katrina', 'Cohn', 'Secretary'] 

pd.DataFrame({'First Name': l[::3], 'Last Name': l[1::3], 'Job Title': l[2::3]}) 

출력

First Name Job Title Last Name 
0  John Manager  Bush 
1 Katrina Secretary  Cohn 
+0

에 ValueError : 배열은 모두 같은 길이 – ComplexData

관련 문제