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

时间:2015-07-21 00:11:34

标签: python-2.7 pandas hex decimal string-conversion

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

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

我基本上有这样的东西

>>> list_A

[52894036, 78893201, 45790373]

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

无论是函数还是简单循环都无关紧要。我一直在尝试很多方法而无法达到我需要的结果。但最终数据来自不同的csv文件,并且永远不会是相同的值或列表大小。

1 个答案:

答案 0 :(得分:2)

Pandas主要用于整数和浮点数,没有我所知道的十六进制特殊功能,但您可以使用apply来访问标准的python转换函数,如hex和{{1 }}:

int

结果:

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

请注意,这个答案适用于Python 3.对于Python 2,您可能需要去掉尾随的" L"在栏目" b"与 a b c 0 52894036999 0xc50baf407 52894036999 1 78893201999 0x125e66ba4f 78893201999 2 45790373999 0xaa951a86f 45790373999