繁体   English   中英

Python Pandas字符串->十六进制->整数->字符串转换

[英]Python Pandas String -> Hexadecimal -> Integer -> String Conversions

我有来自嵌入式硬件的数据。 消息以长十六进制的形式出现,但是该十六进制实际上是将4个字符的块中的几个不同的数据组连接在一起的硬件。 令人困惑的是,数据库将这个长十六进制转换为我可以访问的以下一层的十进制数。

我的数据框:

dict = {'A': ['foo', 'bar', 'baz'], 'B': ['1346', '9953', '5246']}
df = pd.DataFrame(dict)

我想将B列转换为十六进制的LongHex ,将LongHex的最后4个字符LongHex为创建ShortHex ,将ShortHex转换回名为ShortDec的整数,最后用=""包裹LongHexShortHex列,以便Excel能够t将某些十六进制值转换为科学计数法。

到目前为止,这是我尝试过的:

df['LongHex'] = df['B'].apply(lambda x: hex)
df['ShortHex'] = df['LongHex'].str[-4:]
df['ShortDec'] = df['ShortHex'].apply(lambda x: int)
df['LongHex'] = df['LongHex'].apply(str)
df['ShortHex'] = df['ShortHex'].apply(str)
df['LongHex'] = df['LongHex'].apply(lambda x: '="' + x + '"')
df['ShortHex'] = df['ShortHex'].apply(lambda x: '="' + x + '"')

最终,此数据帧输出到.csv。 当我打开文件时,这就是我得到的:

foo, 1346, <built-in function hex>, nan, <type 'int'>
bar, 9953, <built-in function hex>, nan, <type 'int'>
baz, 5246, <built-in function hex>, nan, <type 'int'>

更改此:

df['LongHex'] = df['B'].apply(lambda x: hex)
df['ShortDec'] = df['ShortHex'].apply(lambda x: int)

对此:

df['LongHex'] = df['B'].apply(lambda x: hex(x))
df['ShortDec'] = df['ShortHex'].apply(lambda x: int(x))

另外,作为旁注,我看到您稍后将它们转换为字符串,为什么不这样做呢?

df['LongHex'] = df['B'].apply(lambda x: str(hex(x))[-4:])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM