2017-03-15 114 views
0

我有數據來自嵌入式硬件。消息以長十六進制形式出現,但是這個十六進制實際上是硬件在4字節塊中精簡幾組不同的數據。爲了弄清楚這個問題,數據庫將這個長十六進制轉換爲我所訪問層以下的一個十進制數。Python熊貓字符串 - >十六進制 - >整數 - >字符串轉換

我的數據框:

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

我想列B轉換成一個名爲LongHex十六進制,分裂出來的LongHex最後4個字符,以創建ShortHex,轉換ShortHex回叫ShortDec整數,最後包列LongHexShortHex="",以便Excel不會將某些十六進制值轉換爲科學記數法。

這是我到目前爲止已經試過:

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'> 

回答

1

更改此:

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)) 

另外,作爲一個方面說明我看你把它們轉換成串後來爲什麼不這樣做一氣呵成:

相關問題