2014-07-07 11 views
3

나는 다음과 같은 데이터 프레임을 가지고(팬더)

Index ID Wt Wt.1 
0  4999 3.2 1.2 
1  5012 1.1 3.4 
2  5027 4.4 5.6 

나는 다음과 같은

Index ID Wt 
0  4999 3.2 
0  4999 1.2 
1  5012 1.1 
1  5012 3.4 
2  5027 4.4 
2  5027 5.6 

처럼 보이는 dataframe을 얻기 위해 변환을 적용하기 위해 노력하고있어 이 작업을 수행하는 간단한 방법이 있습니까? 나는 melt, groupby, pivot_table을 사용해 보았지만 행운은 없었다. 이것은 아주 간단한 작업처럼 보입니다. 아마 나는 그것을 지나치게 생각하고 있습니다.

답변

0

한 가지 방법은 빈 dataframe 'ID'와 'Wt.1에 할당하는 것 '열을 빈 IDframe의 대상'ID '와'Wt '열로 사용하면 NaN 값과'Wt '와'Wt '가있는 마지막에 지저분한 추가가 발생하지 않는다는 장점이 있습니다. 1 '열.

In [28]: 

temp = pd.DataFrame() 
temp[['ID','Wt']] = df[['ID','Wt.1']] 
df1 = df[['ID','Wt']].append(temp) 

df1 
Out[28]: 
     ID Wt 
Index   
0  4999 3.2 
1  5012 1.1 
2  5027 4.4 
0  4999 1.2 
1  5012 3.4 
2  5027 5.6 

[6 rows x 2 columns] 

df1.reset_index(inplace=True)으로 전화하여 나중에 색인을 수정할 수 있습니다.

0
당신은 몇 줄에 그것을 할 아마 수 있지만, 나는 그들 표시됩니다

단계별 :

In [86]: 

df2=df.set_index(['Index', 'ID']) 
df3=df2.stack().reset_index() 
df3=df3.ix[:,['Index', 'ID', 0]] 
df3.columns=['Index', 'ID', 'Wt'] 
print df3 
    Index ID Wt 
0  0 4999 3.2 
1  0 4999 1.2 
2  1 5012 1.1 
3  1 5012 3.4 
4  2 5027 4.4 
5  2 5027 5.6