Преобразование кадра данных в матричную форму - PullRequest
1 голос
/ 30 мая 2019

У меня есть набор данных, который выглядит следующим образом:

state VDM  MDM  OM  
AP     1    2   5   
GOA    1    2   1   
GU     1    2   4   
KA     1    5   1   
MA     1    4   4

Я попробовал этот код:

aMat=df1000.as_matrix()
print(aMat)

здесь df1000 - это набор данных.

Но вышеКод дает такой вывод:

[['AP' 1 2 5]
 ['GOA' 1 2 1]
 ['GU' 1 2 4]
 ['KA' 1 5 1]
 ['MA' 1 4 4]]

Я хочу создать 2d список или матрицу, которая выглядит следующим образом:

[[1, 2, 5], [1, 2, 1], [1,  2,  4], [1, 5, 1], [1, 4, 4]]

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Вы можете использовать df.iloc[]:

df.iloc[:,1:].to_numpy()

array([[1, 2, 5],
   [1, 2, 1],
   [1, 2, 4],
   [1, 5, 1],
   [1, 4, 4]], dtype=int64)

Или для строковой матрицы:

df.astype(str).iloc[:,1:].to_numpy()

array([['1', '2', '5'],
   ['1', '2', '1'],
   ['1', '2', '4'],
   ['1', '5', '1'],
   ['1', '4', '4']], dtype=object)

Обратите внимание, почему мы не используем as_matrix()

". As_matrix будет удален в следующей версии. Вместо этого используйте .values."

1 голос
/ 30 мая 2019

Выберите все столбцы без первого с помощью DataFrame.iloc и преобразуйте целочисленные значения в строки с помощью DataFrame.astype, последнее преобразование в массив numpy на to_numpy или DataFrame.values:

#pandas 0.24+
aMat=df1000.iloc[:, 1:].astype(str).to_numpy()
#pandas below
aMat=df1000.iloc[:, 1:].astype(str).values

Или удалить первый столбец с помощью DataFrame.drop:

#pandas 0.24+
aMat=df1000.drop('state', axis=1).astype(str).to_numpy()
#pandas below
aMat=df1000.drop('state', axis=1).astype(str).values
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...