0

我已经按摩了一个数据框,所以它看起来像这样:

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 行中的每一行进行一些计算。还是分层索引更好?

4

1 回答 1

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                                
于 2013-05-22T11:53:49.837 回答