python - 将 n 列重新堆叠为 3 列 Python

标签 python python-3.x pandas dataframe

我有一个看起来像这样的数据框(其中第一行索引号):

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
.
.

作为输出,我需要的是获取每第 3 个值,忽略任何无值并将其重新堆叠成一行,如下所示:

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将所有值转换为平面数组,然后过滤掉Nonereshape:

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.]])

关于python - 将 n 列重新堆叠为 3 列 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55976423/

相关文章:

python - LSTM InvalidArgumentError Tensorflow 2.0/Keras 转换为估计器时出现

python - 如何从 Unix 时间戳中删除小时、分钟和秒?

python - 为什么下面的代码不会抛出错误?

python-3.x - 如何在 python 中使用 ffmpeg 压缩视频?

python - Pandas 的大小和计数有什么区别?

python - OpenCV - 新的 Python 绑定(bind)和 ImageROI?

python - 如何将参数传递给 Google App Engine 上的 python cron 任务?

python - 使用 Windows 机器为 Linux 构建 Python 独立可执行文件

python - 根据相同的键删除 Pandas 中的行

python - Pandas -> DataFrame -> 按价格排名