2015-07-21 47 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

相關問題