Pandas堆栈unstack pivot分层索引 - 重塑数据帧

时间:2013-05-22 11:05:40

标签: stack pandas pivot hierarchical

我已经按下了一个数据帧,所以看起来像这样:

123
456
789
0AB
CDE
FGH
...
,,,

我想改造它,所以看起来像这样:

123789CDE...
4560ABFGH,,,

模式是:

123 789 CDE ...
456 0AB FGH ,,,

也就是说,我需要两行并连接接下来的两行等,所以我得到一个宽的数据帧。

但我的真实数据帧不是三列,可能是50列,也许是100,000行,所以我的数据帧是100,000 x 50大。我想占用100行,并连接接下来的100行等,所以我得到一个宽度为100 x(50 * 100,000 / 100)= 100 x 50,000的宽数据帧。

熊猫可以这样做吗?我的目标是对这100行中的每一行进行一些计算。或者更好的分层索引?

1 个答案:

答案 0 :(得分:1)

shell [33]>>> df
      [33]>>>
     0
0  123
1  456
2  789
3  0AB
4  CDE
5  FGH
6  ...
7  ,,,

shell [34]>>> pd.DataFrame(df.values.reshape(4, 2)).sum()
      [34]>>>
0    123789CDE...
1    4560ABFGH,,,
dtype: object

另一种方法是使用groupby。

shell [35]>>> df['group'] = 0

shell [36]>>> df[1::2]['group'] = 1

shell [37]>>> grouped = df.groupby('group')

shell [38]>>> grouped.sum()
      [38]>>>
                  0
group
0      123789CDE...
1      4560ABFGH,,,

也许值得研究不要创建一个新的框架而是直接在这些组上工作?当然,对于多列和巨大的行数。

shell [39]>>> for key, group in grouped:
    print key
    print group
        ....:
0
     0  group
0  123      0
2  789      0
4  CDE      0
6  ...      0
1
     0  group
1  456      1
3  0AB      1
5  FGH      1
7  ,,,      1