pandas 如何将熊猫数据框转换为一维数组?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/45099354/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to convert a pandas dataframe into one dimensional array?
提问by Bharath
I have a dataframe X
. I want to convert it into 1D array with only 5 elements. One way of doing it is converting the inner arrays to lists. How can I do that?
我有一个数据框X
。我想将它转换为只有 5 个元素的一维数组。一种方法是将内部数组转换为列表。我怎样才能做到这一点?
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
will give a numpy array. I want to convert the inner elements of the array to list. How can I do that?
I tried this but failed
val = X.values
将给出一个 numpy 数组。我想将数组的内部元素转换为列表。我怎样才能做到这一点?我试过这个但失败了
M = val.values.tolist()
A = np.array(M,dtype=list)
N = np.array(M,dtype=object)
回答by Divakar
Here's one approach to have each row as one list to give us a 1D
array of lists -
这是一种将每一行作为一个列表来为我们提供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
回答by gbajson
Have you tried to use df.as_matrix()
and then join rows?
您是否尝试使用df.as_matrix()
然后加入行?
EDIT:
编辑:
Example:
例子:
L=[]
for m in df.as_matrix().tolist():
L += m