python - 将 n 列重新堆叠为 3 列 Python
问题描述
我有一个看起来像这样的数据框(第一行是索引号):
0 1 2 3 4 5 6 7 8
66 56 34 40 41 55 80 None None
90 91 12 44 89 60 11 45 60
10 20 49 90 33 40 67 55 None
.
.
作为输出,我需要获取每个第三个值,忽略任何None 值并将其重新堆叠成一行,如下所示:
0 1 2
66 56 34
40 41 55
80 90 91
12 44 89
60 11 45
60 10 20
49 90 33
40 67 55
有没有一种简单的方法可以以这种方式旋转和堆叠它?
解决方案
首先,我们可以将所有值转换为带有 的平面数组ravel
,然后过滤掉None
s 和reshape
:
x = df.values.ravel()
x[x != None].reshape(-1,3) # pd.DataFrame(x[x != None].reshape(-1,3))
# if you want to have a DataFrame instead of
# numpy array
输出:
array([[66., 56., 34.],
[40., 41., 55.],
[80., 90., 91.],
[12., 44., 89.],
[60., 11., 45.],
[60., 10., 20.],
[49., 90., 33.],
[40., 67., 55.]])
推荐阅读
- html - 将 html 模板转换为矢量 PDF
- r - 如何制作比较多列的二进制矩阵
- python - 如何在没有所有包版本的情况下创建requirement.txt
- angularjs - 特殊字符不会从输入表单中显示在 AngularJS 中,例如 % & ? @
- elasticsearch - 使用logstash句柄删除场景的增量索引
- javascript - 将动态背景设置为引导模式
- python - Python- 在整个数据帧中丢弃小时:分钟:秒形式 timedelta64[ns] 数据
- html - 我正在尝试在网格视图中显示图像,但我不能这样做只有图像名称正在显示,请建议我解决方案
- matlab - arrayfun 输出的串联
- javascript - jQuery:在用户点击 Iphone 时播放音频