首页 > 解决方案 > Pandas:添加数组作为列的值

问题描述

我有一个df存储一些数值的 Pandas DataFrame:

print(df)

       value 
0          0
1          2
2          4
3          5
4          8

我有一个函数可以将数值转换为单热向量

print(to_categorical(0))
[1 0 0 0 0 0 0 0 0 0]

print(to_categorical(5))
[0 0 0 0 0 5 0 0 0 0]

ETC...

所以,我可以在我的数值列上调用我的函数:

print(to_categorical(df['value'))

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

现在我想将我的结果存储为一个新列。这是我对示例的期望:

df['one-hot'] = to_categorical(df['value')
print(df)

        value                    one-hot
0          0       [1 0 0 0 0 0 0 0 0 0]
1          2       [0 0 1 0 0 0 0 0 0 0]
2          4       [0 0 0 0 1 0 0 0 0 0]
3          5       [0 0 0 0 0 1 0 0 0 0]
4          8       [0 0 0 0 0 0 0 0 1 0]

但这给了我一个错误,因为 pandas 试图将我的数组扁平化为多个列。我怎样才能做到这一点 ?

标签: pythonpandas

解决方案


首先,我认为list在 pandas 中使用 s 并不是一个好主意,但可以通过转换为列表来实现:

df['one-hot'] = to_categorical(df['value').tolist()

推荐阅读