介紹
我的代碼應該從 .xlsx 檔案匯入資料并基于此進行計算。問題在于每列的單位保存在作業表的第二行,并作為資料列的第一項匯入。結果是這樣的:
import pandas as pd
import numpy as np
data = pd.DataFrame(data = {'alpha' : ['[°]', 180, 180, 180]})
data['sin'] = np.sin(data['alpha'])
問題
因為第一個單元格是str型別,所以列變成了object型別。我想我可以通過在兩行之間添加以下代碼來重新排列資料框來解決這個問題:
data = data.drop([0]).reset_index(drop = True)
data.astype({'alpha' : 'float64'})
資料框現在看起來像我想要的樣子,我想它應該像預期的那樣作業,但是我得到了一個 AttributeError 和一個 TypeError:
AttributeError: 'float' 物件沒有屬性 'sin'TypeError: ufunc 的回圈不支持沒有可呼叫 sin 方法的 float 型別的引數 0
型別錯誤:ufunc 的回圈不支持沒有可呼叫 sin 方法的 float 型別的引數 0
任何有關為什么我會收到這些錯誤以及如何解決這些錯誤的見解將不勝感激!
uj5u.com熱心網友回復:
您可以像這樣使用 Pandas 的轉換功能:
data = pd.DataFrame(data = {'alpha' : ['[°]', 180, 180, 180]})
data['alpha'] = pd.to_numeric(data['alpha'], errors='coerce')
# is your alpha degrees or radians?
data['sin'] = np.sin(np.deg2rad(data['alpha']))
輸出:
alpha sin
0 NaN NaN
1 180.0 1.224647e-16
2 180.0 1.224647e-16
3 180.0 1.224647e-16
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/341066.html
