2014-07-07 128 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 

有沒有簡單的方法來做到這一點?我嘗試過使用熔體,groupby和pivot_table,但沒有運氣。這似乎是這樣一個簡單的任務,所以也許我正在推翻它。

回答

0

一個辦法是分配給一個空數據框的「ID」和「Wt.1 '列作爲目標'ID'和'Wt'列的空白數據框,這有一個小優點,因爲您不會在末尾有一個混亂的附加值,而您的值爲'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