我有一个dataframe,它的columns数据类型需要Map到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
也是如此
更新:
大多数评论都质疑这样做是否明智。networkx
读取dataframes
并接受np datatypes
。但是,由于以下有据可查的错误,无法使用json_dumps
写入该图:TypeError: Object of type 'int64' is not JSON serializable
谢谢
3条答案
按热度按时间eoigrqb61#
pandas(或numpy)的“原生Python类型”是一个对象。这就是它的程度。Pandas只知道它是一个Python对象,并相应地采取行动。除此之外,你不能有字符串,unicode,整数等类型的列。
但是,您可以拥有对象列,并在其中存储您想要的任何内容。Pandas将在此阶段为您处理大部分转换。
t9eec4r02#
Pandas和扩展的Dataframe都是基于numpy构建的,所以你不能选择存储的特定类型。最好的办法是使用to_dict,然后将其用作poor-mans Dataframe 。你为什么要这么做
ni65a41a3#
使用numpy tolist
参见https://numpy.org/doc/stable/reference/generated/numpy.ndarray.tolist.html