将一串数字转换为十六进制并返回到 dec pandas python

rso*_*mmx 5 hex decimal string-conversion python-2.7 pandas

我目前有一串值,我在过滤来自 csv 文件的数据后检索到这些值。最终我不得不对数据进行一些过滤,但我的数字与列表、数据框或数组相同。我只需要取字符串中的数字并将它们转换为十六进制,然后取十六进制的前 8 个数字并将其转换为字符串中每个元素的十进制。最后,我还需要将相同十六进制的最后 8 个转换为 dec 以及字符串中的每个值。

我无法提供片段,因为它是敏感数据,但这里有一个示例。

我基本上有这样的东西

>>> list_A

[52894036, 78893201, 45790373]
Run Code Online (Sandbox Code Playgroud)

如果我将其转换为数据帧并调用df.dtypes,它会说dtype: object我可以将 A 列的值转换为 bool、int 或 string,但 dtype 始终是一个对象。

不管它是一个函数,还是只是一个简单的循环。我一直在尝试很多方法,但无法获得我需要的结果。但最终数据是从不同的 csv 文件中获取的,并且永远不会是相同的值或列表大小。

Joh*_*hnE 7

Pandas 主要用于处理整数和浮点数,没有我所知道的针对十六进制的特殊工具,但您可以使用它apply来访问标准的 Python 转换函数,例如hexint

df=pd.DataFrame({ 'a':[52894036999, 78893201999, 45790373999] })
df['b'] = df['a'].apply( hex )
df['c'] = df['b'].apply( int, base=0 )
Run Code Online (Sandbox Code Playgroud)

结果:

             a             b            c
0  52894036999   0xc50baf407  52894036999
1  78893201999  0x125e66ba4f  78893201999
2  45790373999   0xaa951a86f  45790373999
Run Code Online (Sandbox Code Playgroud)

请注意,此答案适用于 Python 3。对于 Python 2,您可能需要使用str[:-1].