我有一个pandas数据帧,希望将其转换为numpy记录数组或结构化数组。我正在使用python 3.6/pandas 0.19.2/numpy 1.11.3。
df = pd.DataFrame(data=[[True, 1, 2],[False, 10, 20]], columns=['a','b','c'])
print(df.dtypes)
a bool
b int64
c int64
dtype: object
我的尝试如下:
# record array
res1 = df.to_records(index=False)
# structured array
s = df.dtypes
res2 = np.array([tuple(x) for x in df.values], dtype=list(zip(s.index, s)))
然而,布尔类型在
dtype
这些结果的属性:
print(res1.dtype)
(numpy.record, [('a', '?'), ('b', '<i8'), ('c', '<i8')])
print(res2.dtype)
[('a', '?'), ('b', '<i8'), ('c', '<i8')]
这是为什么?更一般地说,这是唯一的异常,还是每次都必须手动检查以确保数据类型转换已按预期处理?
编辑
:另一方面,似乎是转换
是
对的:
print(res1.a.dtype) # bool
print(res2['a'].dtype) # bool
所以这只是一个展示问题吗?