2015-07-21 95 views
1

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

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

我基本上有这样的事情

>>> list_A 

[52894036, 78893201, 45790373] 

如果我将其转换成数据帧,并呼吁df.dtypes,它说:dtype: object,我可以列A的值转换为BOOL,INT,或字符串,但dtype始终是一个对象。

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

+0

当你说清单,你的意思是这样的:['1234','0','5678'] –

+0

所以为了阐述和简化问题,我目前决定创建一个数组数组。我能够将数组中的值转换为十六进制。但十六进制是两个独立的十进制数的组合。所以我必须在十六进制中取第一个6个字符并将其转换为十进制(不包括'ox'部分),并且也取十六进制值中的最后2个字符并将其转换为小数。这是我用来创建我的十六进制数组。 hex_array = [dec_array中x的十六进制(x)] – rsotommx

回答

2

大熊猫被设计成与整数和浮点数主要工作,没有特别的设施为十六进制的,我知道的,但你可以使用apply访问像hexint标准Python转换功能:

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

结果:

   a    b   c 
0 52894036999 0xc50baf407 52894036999 
1 78893201999 0x125e66ba4f 78893201999 
2 45790373999 0xaa951a86f 45790373999 

注意,此答案是用于Python 3.对于Python 2则可能需要在“b”列与str[:-1]剥去尾随“L”。

+0

因此,为了详细说明和简化问题,我现在决定创建一个数字数组。我能够将数组中的值转换为十六进制。但十六进制是两个独立的十进制数的组合。所以我必须在十六进制中取第一个6个字符并将其转换为十进制(不包括'ox'部分),并且也取十六进制值中的最后2个字符并将其转换为小数。这是我用来创建我的十六进制数组。 hex_array = [dec_array中为x的十六进制(x)] – rsotommx

+0

感谢您的帮助,我发现代码中的错误和您的代码段完美无缺 – rsotommx

+0

@rsotommx好的,很高兴听到! – JohnE

相关问题