当前位置: 首页 > 面试题库 >

熊猫-将df.index从float64更改为unicode或字符串

商曦
2023-03-14
问题内容

我想将数据框的索引(行)从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 ,它基本上是其元素的 机器 类型:以这种方式, numpy直接处理本机类型
,而不处理Python对象,这说明了它是如此之快。因此,当您将dtype从int64更改为float64时,numpy将强制转换C代码中的每个元素。

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

如果要使用字符串,则必须使用 对象 dtype。但是,使用.astype(object)不会给您所要的答案:它将创建带有 对象
dtype的索引,但是将Python float对象放入其中。

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



 类似资料:
  • 问题内容: 我将Pandas’ver 0.12.0’与Python 2.7结合使用,并具有如下数据框: 该系列由一些整数和字符串组成。它在默认情况下是。我想将的所有内容转换为字符串。我试过了,产生下面的输出。 1) 如何将的所有元素转换为String? 2) 我最终将用于为数据帧建立索引。与具有整数索引相比,在数据帧中具有String索引会降低速度吗? 问题答案: 您可以将id的所有元素转换为使用

  • 我有一个看起来像这样的字符串,由普通字符和中间的一个转义Unicode字符组成: < code>reb\u016bke 我想让Python将整个字符串转换成普通的Unicode版本,应该是< code > reb ske 。我试过用< code>str.encode(),但是好像没怎么用,显然decode已经不存在了?我真的卡住了! 编辑:repr的输出是< code>reb\\\u016bke

  • 问题内容: 我有一个带有ID号的大型数据框: 这些现在都是字符串。 我想转换为不使用循环-为此我使用。 问题是我的某些行包含无法转换为的脏数据,例如 如何(不使用循环)删除这些类型的事件,以便我可以放心使用? 问题答案: 您需要向功能添加参数: 如果是列: 但非数字会转换为,因此所有值都是。 对于需要转换到一些值,例如,然后转换为: 样品: 编辑:如果使用0.25+大熊猫,则可以使用:

  • 问题内容: 我有一个包含字母数字键的数据框,我想另存为csv并在以后读取。由于种种原因,我需要以字符串格式显式读取此键列,所以我使用的键严格地是数字的,甚至更糟,例如:1234E5,Pandas会将其解释为浮点数。这显然使密钥完全无用。 问题是,当我为数据框或其中的任何列指定字符串dtype时,我只会得到垃圾回收。我在这里有一些示例代码: 数据框如下所示: 然后我像这样阅读: 结果是: 这是我的计

  • 我有这个“file.csv”文件要和熊猫一起读: 使用 输出为: 我知道,列是一个完整的字符串,因为: 我需要将其作为字符串列表来阅读,如。我尝试了这个问题中提供的解决方案,但没有成功,因为我的和字符实际上会把事情搞砸。 预期输出应为:

  • 我试图找到一种方法,可以将WinAnsiEncoding更改为Unicode,我试着像这样设置字体, 对于简单的文本,这很好,我可以看到Helvetica的字体变化,但是如果文本包含UTF-8字符(例如,U+0083等),我只会看到抛出以下异常, java.lang.IllegalArgumentException:U+0083在此字体的编码中不可用:WinAnsiEncoding org.apa