python - 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 试图将我的数组扁平化为多个列。我怎样才能做到这一点 ?
解决方案
首先,我认为list
在 pandas 中使用 s 并不是一个好主意,但可以通过转换为列表来实现:
df['one-hot'] = to_categorical(df['value').tolist()
推荐阅读
- zebra-printers - 无论如何都可以打印以从 Mac 上查看 EPL2 文件
- python - 具有全矢量化的元素的 Numpy 有序减法
- bluetooth - Raspberry Pi/Raspian:通过 arecord 从蓝牙耳机录制声音不起作用,但也没有错误消息
- java - 为什么我不能在字符串数组的第 0 个索引处输入值?
- bash - 对多个文件中的列求和的脚本
- python - 选择对象实例化的几种方法之一
- javascript - 基于行中文本匹配的JQuery过滤器
- go - GO中的第二次scanf跳转扫描
- javascript - 如何将 kebab-case 转换为 PascalCase?
- java - 无法使用 Selenium(3.11)、GeckoDriver(0.24.0)、Firefox(57 版本)运行 selenium java 脚本