2016-12-06 23 views
5

我有一個看起來像這樣的數據幀時的系列轉換爲 Python的類型錯誤:不能試圖做數學上的數據幀

defaultdict(<class 'list'>, {'XYF':    TimeUS   GyrX   GyrY   GyrZ   AccX \ 
0  207146570 0.000832914 0.001351716 -0.0004189798 -0.651183 
1  207186671 0.001962787 0.001242457 -0.0001859666 -0.6423497 
2  207226791 9.520243E-05 0.001076498 -0.0005664826 -0.6360412 
3  207246474 0.0001093059 0.001616917 0.0003615251 -0.6342875 
4  207286244 0.001412051 0.0007565815 -0.0003780428 -0.637755 


[103556 rows x 12 columns], 'DAR':   TimeUS RSSI RemRSSI TxBuf Noise RemNoise RxErrors Fixed 
0  208046965 159  161 79 25  29  0  0 
1  208047074 159  161 79 25  29  0  0 
2  208927455 159  159 91 28  28  0  0 
3  208927557 159  159 91 28  28  0  0 


[4136 rows x 8 columns], 'NK2':   TimeUS IVN IVE IVD IPN IPE IPD IMX IMY IMZ IYAW \ 
0  207147350 -0.02 0.02 0.00 -0.02 0.01 0.20 0 0 0 1.94 
1  207187259 -0.02 0.02 0.00 -0.02 0.01 0.20 0 0 0 1.94 
2  207227559 -0.02 0.02 0.00 -0.02 0.01 0.14 0 0 0 1.77 
3  207308304 0.02 0.02 0.00 -0.01 0.01 -0.05 0 0 0 1.77 
4  207347766 0.02 0.02 0.00 -0.01 0.01 -0.05 0 0 0 0.82 

我第一次分開後,我想要做的數學與柱:

new_time = dfs['XYF']['TimeUS'] 

然後我試了幾件事來做一些數學運算,但我沒有運氣。 首先,我只是把它當作一個列表來處理。所以

new_time_F = new_time/1000000 

這並不工作,給了我一個浮動的錯誤:

TypeError: unsupported operand type(s) for /: 'str' and 'int' 

所以我這樣做:

new_time_F = float (new_time)/1000000 

這給我一個錯誤:

TypeError: cannot convert the series to <class 'float'> 

我不知道該從哪裏出發。

+0

你有一個列表字典的dfs作爲值和dfs的名稱作爲關鍵字?這是它顯示的內容,而不是df。 – EdChum

+0

@EdChum是的,抱歉不知道df和dfs之間有很大的不同。 –

回答

7

如果你這樣做(如前面建議):

new_time = dfs['XYF']['TimeUS'].astype(float) 
new_time_F = new_time/1000000 
+0

是的,但是,爲什麼我不能這樣做dfs [ 'XYF']。astype(浮點)?爲什麼我不能將整個事物轉換爲浮動狀態?它給了我一個TypeError的錯誤:不支持的操作數類型爲/:'str'和'int' –

+1

實際上,你不能將'astype'應用於數據框。使用'applymap'來代替。例如'dfs ['XYF'] = dfs ['XYF']。applymap(float)' – AlexG

+0

啊! applymap工作!這是因爲astype只能用於列表嗎?或者applymap如何忽略我的數據框中的任何字符串? –

0

似乎你的初始數據包含字符串而不是數字。最好確保數據已經是預先要求的類型。

但是,您可以將字符串轉換爲數字是這樣的:

pd.Series(['123', '42']).astype(float) 

,而不是float(series)

+0

這沒有奏效。我試過這個:pd.Series(new_time_F).astype(float)但我得到一個錯誤TypeError:無法將系列轉換爲

相關問題