2017-08-23 199 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))'但这样做会很好。谢谢! –