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

如何将熊猫数据框的数据类型更改为具有定义格式的字符串?

唐睿
2023-03-14
问题内容

我开始用这个来扯头发-所以我希望有人可以帮忙。我有一个使用openpyxl从Excel电子表格创建的pandas
DataFrame。产生的DataFrame看起来像:

print image_name_data
     id           image_name
0  1001  1001_mar2014_report
1  1002  1002_mar2014_report
2  1003  1003_mar2014_report

[3 rows x 2 columns]

…具有以下数据类型:

print image_name_data.dtypes
id            float64
image_name     object
dtype: object

问题是id列中的数字实际上是标识号,我需要将它们视为字符串。我尝试使用以下方法将id列转换为字符串:

image_name_data['id'] = image_name_data['id'].astype('str')

这看起来有点丑陋,但它确实会产生类型为’object’而不是’float64’的变量

print image_name_data.dyptes
id            object
image_name    object
dtype: object

但是,创建的字符串具有小数点,如下所示:

print image_name_data
       id           image_name
0  1001.0  1001_mar2014_report
1  1002.0  1002_mar2014_report
2  1003.0  1003_mar2014_report

[3 rows x 2 columns]

如何将pandas DataFrame中的float64列转换为给定格式的字符串(在这种情况下,例如’%10.0f’)?


问题答案:

我无法重现您的问题,但您是否尝试过先将其转换为整数?

image_name_data['id'] = image_name_data['id'].astype(int).astype('str')

然后,关于更一般的问题,您可以使用map(如本答案所示)。在您的情况下:

image_name_data['id'] = image_name_data['id'].map('{:.0f}'.format)


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

  • 问题内容: 我有一个熊猫数据框,其中一列包含格式为日期的字符串 例如 目前该列的是。 如何将列值转换为Pandas日期格式? 问题答案: 使用类型

  • 问题内容: 我有一个数据框,其第一列是 例如,如果我愿意,它将给我。但是,我不想提起诉讼。我只想打印。有人可以教我该怎么做吗?非常感谢! 问题答案: 可以通过以下方式实现: 但是解决方案并不通用,如果输入也删除。 因此,解决方案只能在不到一天的时间间隔内正常工作。 更通用的解决方案是创建自定义格式:

  • 我有一个pd DataFrame列,其中日期值的格式不同。例如“YYYY-MM-DD hh:MM:ss”和“DD.MM”。“YYYY”甚至“DD.MM”我想将它们全部转换为一种格式(例如,“YYYY-MM-DD”),并(在许多事情中)尝试过 查找日期未写为“YYYY-MM-DD hh:MM:ss”的行。然而,这不起作用。 因此,我检查了列的类型 然后我检查了一下 并收到了诸如类的datetime之

  • 问题内容: 如果我有一个包含以下列的数据框: 我想说:这是一个数据框,请给我列出对象类型或日期时间类型的列的列表吗? 我有一个将数字(Float64)转换为两位小数的函数,并且我想使用此数据框列的特定类型的列表,并通过此函数运行它以将它们全部转换为2dp。 也许: 问题答案: 如果您想要某种类型的列的列表,可以使用:

  • 问题内容: 我想知道是否有某种方式将所有DataFrame负数替换为零? 问题答案: 如果所有列都是数字列,则可以使用布尔索引: 对于更一般的情况,此答案显示了private方法: 使用类型,布尔索引似乎可以在单独的列上工作,但不能在整个数据帧上工作。因此,您可以执行以下操作: 更新: 与整个DataFrame上的作品进行比较: