当前位置: 首页 > 知识库问答 >
问题:

Python数据帧缩短了从十六进制字符串到int的转换时间

越飞语
2023-03-14

我的意图是将整个数据帧从十六进制字符串转换为int。目前,我能够根据pandas dataframe提供的答案进行转换。应用--将十六进制字符串转换为整数

df=df.apply(lambda x:x.astype(str). map(lambda x: int(x, base=16))

但是,它运行非常慢,尤其是当数据帧很大时。我看到了他的回答https://stackoverflow.com/a/52855646/5057185说lambda不是必需的,并且增加了开销。我试图实现它,但我得到了这个错误。

df2 = pd.read_csv(path+temp_file, dtype=str)
df2 = df2.dropna()
df2 = df2.apply(int,base=16)

df2=df2。应用(int,base=16)回溯(最后一次调用):文件“”,第1行,在文件“C:\Python27\lib\site packages\pandas\core\frame.py”的第6487行,在应用返回op.get_result()文件“C:\Python27\lib\site packages\pandas\core\apply”的第151行,在get_result return self中。apply_standard()文件“C:\Python27\lib\site packages\pandas\core\apply.py”,第257行,在apply_standard self中。apply_series_generator()文件“C:\Python27\lib\site packages\pandas\core\apply.py”,第286行,在apply_series_generator results[i]=self中。f(v)文件“C:\Python27\lib\site packages\pandas\core\apply.py”,第78行,在f return func(x,*args,**kwds)TypeError:(“int()无法转换带显式基的非字符串”,u'发生在索引POWERON'处)

我相信这个错误是由于dataframe的数据类型是object而不是string造成的,这个问题在pandas的新版本pd中已经知道并解决了。读取csv(路径临时文件,dtype=“string”)。我用的是熊猫的旧版本。如何绕过此方法或任何其他方法以更快地转换数据帧?

共有1个答案

漆雕唯
2023-03-14

我想你需要数据帧。applymap用于元素处理:

df2 = df2.applymap(lambda x: int(x,base=16))

另一个想法是通过DataFrame来重塑。堆叠系列。取消堆叠

df2 = df2.stack().apply(lambda x: int(x, 16)).unstack()

 类似资料:
  • 问题内容: 我正在尝试将十六进制代码长8个字符的字符串转换为整数,以便可以进行int比较,而不是对许多不同值进行字符串比较。 我知道在C ++中这是微不足道的,但是我需要在Java中完成。我需要满足的测试用例实质上是将“ AA0F245C”转换为int,然后再返回到该字符串,以便我知道它在正确转换。 我尝试了以下方法: 我也尝试一次将两个字符做一次,然后将结果相乘,转换有效,但数字不正确。 不能这

  • 问题内容: 如何在Python中将十六进制字符串转换为int? 我可能将其命名为或。 问题答案: 如果没有 0x前缀,则需要显式指定基数,否则无法分辨: 使用 0x前缀,Python可以自动区分十六进制和十进制。 (必须指定0为基数才能调用此前缀猜测行为;省略第二个参数意味着假定基数为10。)

  • 我正在尝试将int转换为字符串中的十六进制。目前的解决方案并不是预期的那样有效。 十六进制必须采用格式。例如。; 输出与十六进制完全不同,即使它们等于相应的十六进制值。输出必须是格式的十六进制。 这里不走运。后跟所以它不有用。在之前没有。我想要那个。更好的是,一个我选择的填充长度。注释中建议的也不起作用。 不能使用,因为必须转义,或者代码甚至不能工作。我真的希望避免需要修改字符串的解决方案,因为这

  • 问题内容: 我正在尝试使用但我得到了 我尝试了很多变体,它们似乎都可以在Python 2.5.2中工作,那么我需要做些什么才能使它们在Python 3.1中工作? 问题答案: 该编解码器已被卡住在3.x中 改为使用:

  • 问题内容: 我在ex中有整数。16,我正在尝试将此数字转换为十六进制数字。我试图通过使用十六进制函数来实现此目的,但是每当您向十六进制函数提供整数时,它都会返回十六进制数字的字符串表示形式, 有人可以告诉我如何将字符串格式的十六进制数字转换为简单的十六进制数字。 谢谢!! 问题答案:

  • 问题内容: 我想将一个整数(将为<= 255)用于十六进制字符串表示形式 例如:我想通过并离开,或获得。 我曾尝试使用65来执行此操作,但由于它想采用单个字符串,因此上述内容均会阻塞。 问题答案: 您正在寻找功能。 您似乎在混合使用整数的十进制表示形式和整数的十六进制表示形式,因此尚不清楚您需要什么。根据您的描述,我认为这些片段之一显示了您想要的内容。 请注意,这与 包含整数(十六进制)的字符串