9

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?

      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

M = val.values.tolist()
A = np.array(M,dtype=list)
N = np.array(M,dtype=object)
2
  • Are you after X.stack()? Commented Jul 14, 2017 at 9:33
  • 1
    Nope. I want a one dimensional array with only 5 elements not series. See @Divakar's answer. Commented Jul 14, 2017 at 9:41

3 Answers 3

8

Here's one approach to have each row as one list to give us a 1D array of lists -

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
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks a lot @Divakar this is what I wanted
0

Have you tried to use df.as_matrix() and then join rows?

EDIT:

Example:

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

1 Comment

I wanted a numpy array
0

If it has only one column, you can try this

op_col = []
for i in df_name['Column_name']:
    op_col.append(i)
print(op_col)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.