堆叠熊猫数据框

时间:2018-10-11 10:16:17

标签: python-3.x pandas dataframe

假设我有一个数据框,其中有两列,分别是“ column”和“ value”,如下所示:

数据框1:

                   column  value
0                  column1     1
1                  column2     1
2                  column3     1
3                  column4     1
4                  column5     2
5                  column6     1
6                  column7     1
7                  column8     1
8                  column9     8
9                  column10    2
10                 column1     1
11                 column2     1
12                 column3     1
13                 column4     3
14                 column5     2
15                 column6     1
16                 column7     1
17                 column8     1
18                 column9     1
19                 column10    2
20                 column1     5
..                      ...   ...

我要转换此数据框,使其看起来像这样:

数据框2:

    column1 column2 column3 column4 column5 column6 column7 column8 column9 column10
    0       1      1       1       1       2       1       1       1        8      2
    1       1      1       1       3       2       1       1       1        1      2
    2       5      ..      ..      ..      ..      ..      ..      ..       ..     ..
    ..      ..     ..      ..      ..      ..      ..      ..      ..       ..     ..

现在我知道如何反过来了。如果您有一个名为df的数据框,它看起来像数据框2 ,则可以将其与以下代码堆叠在一起:

df = (df.stack().reset_index(level=0, drop=True).rename_axis(['column']).reset_index(name='value'))

不幸的是,我不知道该怎么回去!

问题:如何操作数据框1 (如果是一个单词,将其拆开),使其看起来像数据框2 ?< / p>

1 个答案:

答案 0 :(得分:2)

set_index创建$NewEventDate = $createDate->format('Y-m-d H:i:s'); ,并由cumcount创建计数器MultiIndex,并由unstack重塑形状:

Series

最后一次(如果需要按列名的数值排序)对整数使用extract进行转换,并按argsort获取列的位置-最后按iloc进行重新排序:

g = df.groupby('column').cumcount()
df1 = df.set_index([g, 'column'])['value'].unstack(fill_value=0)
print (df1)
column  column1  column10  column2  column3  column4  column5  column6  \
0             1         2        1        1        1        2        1   
1             1         2        1        1        3        2        1   
2             5         0        0        0        0        0        0   

column  column7  column8  column9  
0             1        1        8  
1             1        1        1  
2             0        0        0