Как преобразовать один столбец в dataframe в 2D-массив в Python - PullRequest
3 голосов
/ 13 апреля 2019

У меня есть фрейм данных, который содержит данные наблюдений в виде:

import pandas as pd
d = {'ID': [0,1,2], 'Value': 
[[1,2,1],[5,4,6],[7,20,9]]}
df = pd.DataFrame(data=d)

как мне получить массив из значения, чтобы сформировать 2D numpy.ndarray

 [[1, 2, 1],
 [5, 4, 6],
 [7, 20, 9]]

с формой: (3,3)

Я пытаюсь

print(df['Value'].values)

, но это дает мне

[list([1, 2, 1]) list([5, 4, 6]) list([7, 20, 9])]

, а это не то, что я хочу

1 Ответ

2 голосов
/ 13 апреля 2019

Вы можете извлечь списки столбцов, а затем массив-ify, используя несколько методов ниже.

np.array(df['Value'].tolist())

array([[ 1,  2,  1],
       [ 5,  4,  6],
       [ 7, 20,  9]])

# np.vstack(df['Value'])
np.stack(df['Value'])

array([[ 1,  2,  1],
       [ 5,  4,  6],
       [ 7, 20,  9]])

Если списки имеют неравномерный размер, будет возвращен обычный 2D-массив с nans в пропущенных позициях.

df['Value'] = [[1, 2], [3], [4, 5, 6]]
df

   ID      Value
0   0     [1, 2]
1   1        [3]
2   2  [4, 5, 6]

# pd.DataFrame(df['Value'].tolist()).values   #  < v0.24
pd.DataFrame(df['Value'].tolist()).to_numpy() #  v0.24+

array([[ 1.,  2., nan],
       [ 3., nan, nan],
       [ 4.,  5.,  6.]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...