2017-08-23 238 views
1

我試圖從另一個question重塑融化的數據幀。截至目前,這是我有:重塑融化的熊貓數據幀

col1 variable value 
0 A  col2  1 
1 B  col2  2 
2 A  col2  3 
3 B  col2  3 
4 A  col3  5 
5 B  col3  4 
6 A  col3  6 
7 B  col3  5 

我試圖得到它是這樣的:

col1 variable value1 value2 
0 A  col2 1 3 
1 A  col3 5 6 
2 B  col2 2 3 
3 B  col3 4 5 

要理解這一點重新排序背後的邏輯,這就是原來的數據幀長相like,sorted:

col1 variable value 
0 A  col2  1 \ 1 (value1 = 1, value2 = 3) 
2 A  col2  3/
4 A  col3  5 \ 2 (value1 = 5, value2 = 6) 
6 A  col3  6/
1 B  col2  2 \ 3 (value1 = 2, value2 = 3) 
3 B  col2  3/
5 B  col3  4 \ 4 (value1 = 4, value2 = 5) 
7 B  col3  5/

我想要做的就像重塑。

我相信這會與pivotpivot_table有關,但我不確定...我該怎麼做?

回答

1

一個使用groupby

In [589]: (df.groupby(['col1', 'variable']).value.apply(list) 
      .apply(pd.Series) 
      .rename(columns=lambda x: 'value{}'.format(x+1)) 
      .reset_index()) 
Out[589]: 
    col1 variable value1 value2 
0 A  col2  1  3 
1 A  col3  5  6 
2 B  col2  2  3 
3 B  col3  4  5 
+0

我已經用'df.groupby([ 'COL1', '變量'],as_index =假)[ '值']應用方式(拉姆達×:PD .Series(x.values))'但這樣做會很好。謝謝! –