我在将一个包含数组的pandas系列转换为数值类型时遇到了问题。
import numpy as np
import pandas as pd
df = pd.DataFrame({"vector" : [[0.1, 0.2, 0.3]]})
然后两者都是:
df.vector.astype("float16")
df.vector.values.astype(np.float16)
导致
ValueError: setting an array element with a sequence.
此解决办法:
np.array([x for x in df.vector.values]).astype("float32")
工程.
使用基于pandas系列的列表列表的常规astype转换有什么问题?
2条答案
按热度按时间vnjpjtjt1#
Pandas
最适合标量值,所以如果使用arrays
的lists
解决方案有点复杂,因为astype
只转换标量:jchrr9hc2#
由于您希望在DataFrame中转换的元素是Series中的列表,因此您需要向向量操作的Pandas版本添加迭代。你可以用
apply
和map
来实现:输出量: