1. ホーム
  2. python

[解決済み] Pandasのデータフレームにnumpyの配列をカラムとして追加する

2022-12-13 05:54:19

質問

以下のような形状(X,Y)のPandasデータフレームオブジェクトを持っています。

[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]

と、以下のような形状のnumpy sparse matrix (CSC)です。

[[0, 1, 0],
[0, 0, 1],
[1, 0, 0]]

データフレームがこのようになるように、行列の内容を新しい名前の列でデータフレームに追加するには、どうすればよいでしょうか。

[[1, 2, 3, [0, 1, 0]],
[4, 5, 6, [0, 0, 1]],
[7, 8, 9, [1, 0, 0]]]

データフレームの形状が (X, Y+1) になり、行列の行がデータフレームの要素になっていることに注意してください。

どのように解決するのですか?

import numpy as np
import pandas as pd
import scipy.sparse as sparse

df = pd.DataFrame(np.arange(1,10).reshape(3,3))
arr = sparse.coo_matrix(([1,1,1], ([0,1,2], [1,2,0])), shape=(3,3))
df['newcol'] = arr.toarray().tolist()
print(df)

イールド

   0  1  2     newcol
0  1  2  3  [0, 1, 0]
1  4  5  6  [0, 0, 1]
2  7  8  9  [1, 0, 0]