2013-05-22 2 views
0

을 :팬더는 언 스택 피벗 계층 인덱스 스택 - 그것은 다음과 같습니다 그래서 나는 dataframe을 마사지 한 바꿀 dataframe

123 
456 
789 
0AB 
CDE 
FGH 
... 
,,, 

은 다음과 같습니다 그래서 나는 그것을 변환하고 싶습니다 :

123789CDE... 
4560ABFGH,,, 

패턴은 이것이다 : 나는 두 행을하고 다음 두 행을 연결, 등, 그래서 넓은 D를 얻을 수있다

123 789 CDE ... 
456 0AB FGH ,,, 

ataframe.

하지만 내 실제 데이터 프레임은 3 열이 아니며, 아마 50 열이고 어쩌면 100000 행이므로 내 데이터 프레임은 100,000 x 50입니다. 100 개의 행을 가져 와서 다음 100 개의 행을 연결하고자하므로 100 x (50 * 100,000/100) = 100 x 50,000 인 넓은 데이터 프레임을 얻습니다.

팬더가이 작업을 수행 할 수 있습니까? 내 목표는이 100 개의 행 각각에 대해 계산을하는 것입니다. 아니면 계층 적 색인이 더 좋습니까?

답변

1
shell [33]>>> df 
     [33]>>> 
    0 
0 123 
1 456 
2 789 
3 0AB 
4 CDE 
5 FGH 
6 ... 
7 ,,, 

shell [34]>>> pd.DataFrame(df.values.reshape(4, 2)).sum() 
     [34]>>> 
0 123789CDE... 
1 4560ABFGH,,, 
dtype: object 

또 다른 접근법은 groupby를 사용하는 것입니다. 새 프레임을 만들고 대신 그룹에 직접 작동하지 공부 어쩌면 가치가

shell [35]>>> df['group'] = 0 

shell [36]>>> df[1::2]['group'] = 1 

shell [37]>>> grouped = df.groupby('group') 

shell [38]>>> grouped.sum() 
     [38]>>> 
        0 
group 
0  123789CDE... 
1  4560ABFGH,,, 

? 여러 열과 엄청난 수의 열에 대해서는 분명합니다.

shell [39]>>> for key, group in grouped: 
    print key 
    print group 
     ....: 
0 
    0 group 
0 123  0 
2 789  0 
4 CDE  0 
6 ...  0 
1 
    0 group 
1 456  1 
3 0AB  1 
5 FGH  1 
7 ,,,  1         
+0

와 접근 방식 "바꿀()"당신이 준 출력을 제공하지 않습니다. 그것은 준다 : 을 >> (10,2) 123 456 789 0AB CDE FGH ... ,,, 대신 바꿀 : 123 ... 789 CDE 456 0AB FGH을 ,, , 더 나은 "groupby"에 대해 가르쳐 주셔서 감사합니다. 그러나 "grouped"는 DataFrameGroupBy 개체입니다. "grouped"는 내가 사용할 수있는 일반 DataFrame 객체가되고 싶습니다. 이제 "그룹화 된"객체는 DataFrameGroupBy이며 작업 방법을 알지 못합니다. 예를 들어 .ix (...) 메소드가 없습니다. "그룹화"를 DataFrame으로 변환 할 수 있습니까? – user2186859

+0

PS. 도와 줘서 고마워. 나는 당신이 올바른 방향으로 나를 지적 해 주셔서 정말로 감사합니다! :) – user2186859

+0

groupby() 솔루션을 사용할 수 있지만 개별 그룹과 작업 할 수 없습니다. 나는 동시에 모든 그룹을 볼 필요가있다. 따라서 다음과 같이 매우 넓은 데이터 프레임을 만들고 싶습니다. Group1 | 그룹 2 | ... | Groupn (각 그룹은 100 개의 행으로 구성되며 다음 Group 등으로 연결되므로 모든 그룹이 열을 확장 함) 이제 첫 번째 행 (모든 그룹에 걸쳐 있음)을 살펴보고 각 행에서 일부 기능을 실행합니다. 어떻게해야합니까? – user2186859