如何将pandas数据框转换为一维数组?

9
我有一个名为X的数据框。我想将其转换为只有5个元素的1D数组。其中一种方法是将内部数组转换为列表。我该怎么做呢?
      0     1   2          3           4           5
0   1622    95  1717   85.278544    1138.964373 1053.685830
1   62     328  390    75.613900    722.588235  646.974336
2   102    708  810    75.613900    800.916667  725.302767
3   102    862  964    75.613900    725.870370  650.256471
4   129    1380 1509   75.613900    783.711111  708.097211
val = X.values会给出一个numpy数组。我想将数组的内部元素转换为列表。我该怎么做? 我尝试了这个,但失败了。
M = val.values.tolist()
A = np.array(M,dtype=list)
N = np.array(M,dtype=object)

你是想要使用 X.stack() 吗? - MaxU - stand with Ukraine
1
不,我想要一个只有5个元素的一维数组,而不是系列。请参见@Divakar的答案。 - Bharath M Shetty
3个回答

9

以下是一种方法,将每行作为一个列表,以便给我们一个列表的 1D 数组 -

In [231]: df
Out[231]: 
      0     1     2          3            4            5
0  1622    95  1717  85.278544  1138.964373  1053.685830
1    62   328   390  75.613900   722.588235   646.974336
2   102   708   810  75.613900   800.916667   725.302767
3   102   862   964  75.613900   725.870370   650.256471
4   129  1380  1509  75.613900   783.711111   708.097211

In [232]: out = np.empty(df.shape[0], dtype=object)

In [233]: out[:] = df.values.tolist()

In [234]: out
Out[234]: 
array([list([1622.0, 95.0, 1717.0, 85.278544, 1138.964373, 1053.6858300000001]),
       list([62.0, 328.0, 390.0, 75.6139, 722.5882349999999, 646.974336]),
       list([102.0, 708.0, 810.0, 75.6139, 800.916667, 725.302767]),
       list([102.0, 862.0, 964.0, 75.6139, 725.87037, 650.256471]),
       list([129.0, 1380.0, 1509.0, 75.6139, 783.7111110000001, 708.097211])], dtype=object)

In [235]: out.shape
Out[235]: (5,)

In [236]: out.ndim
Out[236]: 1

非常感谢@Divakar,这正是我想要的。 - Bharath M Shetty

0
你尝试过使用df.as_matrix(),然后连接行吗?

编辑:

例子:

L=[]
for m in df.as_matrix().tolist():
    L += m

1
我想要一个numpy数组。 - Bharath M Shetty

0
如果只有一列,你可以尝试这个。
op_col = []
for i in df_name['Column_name']:
    op_col.append(i)
print(op_col)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接