Skip to main content
 首页 » 编程设计

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

2025年05月04日17bonelee

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

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将所有值转换为平面数组,然后过滤掉None和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.]])