【发布时间】:2015-11-19 08:42:05
【问题描述】:
我有一个对象类型的 numpy 数组。我想找到具有数值的列并将它们转换为浮点数。我还想找到具有对象值的列的索引。 这是我的尝试:
import numpy as np
import pandas as pd
df = pd.DataFrame({'A' : [1,2,3,4,5],'B' : ['A', 'A', 'C', 'D','B']})
X = df.values.copy()
obj_ind = []
for ind in range(X.shape[1]):
try:
X[:,ind] = X[:,ind].astype(np.float32)
except:
obj_ind = np.append(obj_ind,ind)
print obj_ind
print X.dtype
这是我得到的输出:
[ 1.]
object
【问题讨论】:
-
不清楚您在这里期待什么,您的输出显示第二列无法转换为浮点数并且 dtype 是
object这是正确的,因为这是strdtype,如果您想要列名,则返回obj_ind = np.append(obj_ind,x.columns[ind]) -
我想将我的第一列转换为 float @EdChum
-
numpy数组的元素不能有不同的dtypes。您可能需要一个结构化数组来代替