Сохранить массив как значение в столбце Pandas

2 ответа

Мне кажется, нужно преобразовать массив 2d в list s:

table = pd.DataFrame({"Teams":list('aaasdffds')})

from sklearn.preprocessing import MultiLabelBinarizer
one_hot_encoder = MultiLabelBinarizer()

table["Teams"] = one_hot_encoder.fit_transform(table["Teams"]).tolist()
print (table)
          Teams
0  [1, 0, 0, 0]
1  [1, 0, 0, 0]
2  [1, 0, 0, 0]
3  [0, 0, 0, 1]
4  [0, 1, 0, 0]
5  [0, 0, 1, 0]
6  [0, 0, 1, 0]
7  [0, 1, 0, 0]
8  [0, 0, 0, 1]

Но хранить массивы или списки в один столбец не рекомендуется, потому что невозможно использовать векторизованные методы / функции, лучше создать DataFrame:

table = pd.DataFrame(one_hot_encoder.fit_transform(table["Teams"]), 
                     columns=one_hot_encoder.classes_)
print (table)

   a  d  f  s
0  1  0  0  0
1  1  0  0  0
2  1  0  0  0
3  0  0  0  1
4  0  1  0  0
5  0  0  1  0
6  0  0  1  0
7  0  1  0  0
8  0  0  0  1
1
ответ дан jezrael 17 August 2018 в 13:27
поделиться

Понимая, что вам нужен список в вашем DataFrame. Вы можете хранить массивы в виде списка, панды не будут изменять его.

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
encoded_array = mlb.fit_transform(table['Teams'])
table['Teams'] = [ [encoded_array [i,:]] for i in range(table.shape[0]) ]
0
ответ дан Vivek 17 August 2018 в 13:27
поделиться
  • 1
    OP нужен новый столбец, заполненный массивом, поэтому ваш вопрос не отвечает на него. Это рекомендация только в том же принципе в моем ответе. – jezrael 13 July 2018 в 08:44
  • 2
    мой плохой, обновил его. Благодарю. – Vivek 13 July 2018 в 09:06
Другие вопросы по тегам:

Похожие вопросы: