gpt4 book ai didi

python - pandas - 将 df.index 从 float64 更改为 unicode 或字符串

转载 作者:IT老高 更新时间:2023-10-28 20:37:57 25 4
gpt4 key购买 nike

我想将数据帧的索引(行)从 float64 更改为字符串或 unicode。

我认为这可行,但显然不行:

#check type
type(df.index)
'pandas.core.index.Float64Index'

#change type to unicode
if not isinstance(df.index, unicode):
df.index = df.index.astype(unicode)

错误信息:

TypeError: Setting <class 'pandas.core.index.Float64Index'> dtype to anything other than float64 or object is not supported

最佳答案

你可以这样做:

# for Python 2
df.index = df.index.map(unicode)

# for Python 3 (the unicode type does not exist and is replaced by str)
df.index = df.index.map(str)

至于为什么你会与你从 int 转换为 float 时不同,这是 numpy(pandas 所基于的库)的一个特性。

每个 numpy 数组都有一个 dtype,它基本上是其元素的 ma​​chine 类型:这样,numpy 直接处理原生类型,而不是 Python 对象,这解释了它是如何这么快的。因此,当您将 dtype 从 int64 更改为 float64 时,numpy 将强制转换 C 代码中的每个元素。

还有一个特殊的 dtype:object,它基本上会提供一个指向 Python 对象的指针。

如果你想要字符串,那么你必须使用 object dtype。但是使用 .astype(object) 不会给你你正在寻找的答案:它会用 object dtype 创建一个索引,但将 Python 浮点对象放在里面。

在这里,通过使用 map,我们使用适当的函数将索引转换为字符串:numpy 获取字符串对象并了解索引必须具有 object dtype,因为这是唯一的 dtype可以容纳字符串。

关于python - pandas - 将 df.index 从 float64 更改为 unicode 或字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35368645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com