取得每行值并在Pandas中创建一列

时间:2018-08-02 05:31:49

标签: python pandas

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

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)并将它们堆叠到一列中。

有没有一种简单的方法可以在熊猫中做到这一点,而不是搞乱数组和列表呢?

2 个答案:

答案 0 :(得分:5)

如果第一列不是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

答案 1 :(得分:2)

您可以使用setwd("E:/RTests") library(leaflet) library(maps) mydata <- read.csv("data1.csv", check.names=FALSE, stringsAsFactors = FALSE, header = TRUE, fileEncoding="UTF-8-BOM") mydata <- data.frame(mydata) leaflet(data = mydata) %>% addTiles() %>% addMarkers (~lon, ~lat, popup = ~as.character(emp), label = ~as.character(emp))

stack