我已经按下了一个数据帧,所以看起来像这样:
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行中的每一行进行一些计算。或者更好的分层索引?
答案 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