Преобразуйте двумерный массив Numpy в панды DataFrame со значением столбец-строка - PullRequest
0 голосов
/ 01 декабря 2018

Предположим, у меня есть двумерный массив numy, подобный этому:

arr = np.array([[1, 2], [3, 4], [5, 6]])
# array([[1, 2],
#        [3, 4],
#        [5, 6]])

Как можно преобразовать это в "длинную" структуру с одной записью на значение, связанную с индексом строки и столбца?В этом случае это будет выглядеть следующим образом:

df = pd.DataFrame({'row': [0, 0, 1, 1, 2, 2],
                  'column': [0, 1, 0, 1, 0, 1],
                  'value': [1, 2, 3, 4, 5, 6]})

melt назначает только идентификатор столбца, а не строку:

pd.DataFrame(arr).melt()
#   variable    value
# 0        0        1
# 1        0        3
# 2        0        5
# 3        1        2
# 4        1        4
# 5        1        6

Есть ли способ присоединить идентификатор строки?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

melt может использовать индекс, если это столбец:

arrdf = pd.DataFrame(arr)
arrdf['row'] = arrdf.index
arrdf.melt(id_vars='row', var_name='column')

#    row    column  value
# 0    0         0      1
# 1    1         0      3
# 2    2         0      5
# 3    0         1      2
# 4    1         1      4
# 5    2         1      6
0 голосов
/ 01 декабря 2018

Передать index на idvar:

pd.DataFrame(arr).reset_index().melt('index')
#    index variable  value
# 0      0        0      1
# 1      1        0      3
# 2      2        0      5
# 3      0        1      2
# 4      1        1      4
# 5      2        1      6

Вы можете переименовать:

df = pd.DataFrame(arr).reset_index().melt('index')
df.columns = ['row', 'column', 'value']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...