【发布时间】:2018-05-05 13:20:51
【问题描述】:
我有一个数据框,其列数据类型需要映射到 python 本机数据类型。
我希望能够从 numpy 获取字典并将每一列转换为它的本机类型。
例如:
{numpy.object_: object,
numpy.bool_: bool,
numpy.string_: str,
numpy.unicode_: unicode,
numpy.int64: int,
numpy.float64: float,
numpy.complex128: complex}
astype 和 pd.to_numeric 我都试过了,都没有充分地向下转换列。
df['source'] = df['source'].astype(int) 返回int32,pd.to_numeric 也是如此
更新:
大多数 cmets 质疑这样做是否明智。 networkx 读取 dataframes 并接受 np datatypes。然而,由于这个有据可查的错误,无法使用json_dumps 编写图表:TypeError: Object of type 'int64' is not JSON serializable
谢谢
【问题讨论】:
-
不,你不能。你为什么要?将它们作为 numpy 类型处理要快得多。
-
对于
numpy数组,tolist()或item()(对于一个元素)是获取列表或原生 Python 对象的最佳方式。astype只是改变数组dtype
标签: python python-3.x pandas numpy dataframe