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 文件中获取的,并且永远不会是相同的值或列表大小。
Pandas 主要用于处理整数和浮点数,没有我所知道的针对十六进制的特殊工具,但您可以使用它apply
来访问标准的 Python 转换函数,例如hex
和int
:
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]
.