获取每一行的值,并在列中创建一列

2024-04-26 10:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的数据帧

Timestamp              x_1          x_2       x_3         x_4    x_5      x_6
2018-01-31 22:30:00 2.023844    2.477428    1.023026    1.035433    0.530817    0.576471
2018-02-01 00:00:00 0.198297    -0.012164   0.103245    -0.101643   0.087468    -0.096665
2018-02-01 01:30:00 0.130721    0.042116    0.200378    0.166665    0.263809    0.250849
2018-02-01 03:00:00 0.621256    1.130577    0.907597    1.659503    1.161939    1.966579
2018-02-01 04:30:00 1.399033    2.438298    1.521268    2.570770    1.555749    2.583903

我想创建一个新的数据帧,它只包含一列

  vals
    2.023844
    2.477428    
    1.023026    
    1.035433    
    0.530817    
    0.576471
    0.198297    
    -0.012164   
    0.103245    
    -0.101643   
    0.087468    
    -0.096665
    0.130721    
    0.042116    
    0.200378    
    0.166665    
    0.263809    
    0.250849

我必须获取每一行的值(x_1到x_6)并将它们堆叠到一列中

有没有一种简单的方法可以在pandas中实现,而不是在数组和列表中乱来


Tags: 数据方法pandas列表数组timestampvals
2条回答

您可以使用stack

df.iloc[:,1:].stack().to_frame('vals').reset_index(drop=True)

        vals
0   2.023844
1   2.477428
2   1.023026
3   1.035433
4   0.530817
5   0.576471
6   0.198297
7  -0.012164
8   0.103245
9  -0.101643
10  0.087468
11 -0.096665
12  0.130721
13  0.042116
14  0.200378
15  0.166665
16  0.263809
17  0.250849
18  0.621256
19  1.130577
20  0.907597
21  1.659503
22  1.161939
23  1.966579
24  1.399033
25  2.438298
26  1.521268
27  2.570770
28  1.555749
29  2.583903

如果第一列不是index

df = pd.DataFrame({'vals':df.iloc[:, 1:].values.reshape(-1)})

如果第一列是索引:

df = pd.DataFrame({'vals':df.values.reshape(-1)})

print (df)
        vals
0   2.023844
1   2.477428
2   1.023026
3   1.035433
4   0.530817
5   0.576471
6   0.198297
7  -0.012164
8   0.103245
9  -0.101643
10  0.087468
11 -0.096665
12  0.130721
13  0.042116
14  0.200378
15  0.166665
16  0.263809
17  0.250849
18  0.621256
19  1.130577
20  0.907597
21  1.659503
22  1.161939
23  1.966579
24  1.399033
25  2.438298
26  1.521268
27  2.570770
28  1.555749
29  2.583903

相关问题 更多 >