簡體   English   中英

在進行向量化計算時如何處理typeError?

[英]How to handle typeErrors when doing vectorize calculations?

我想避免在使用pandas數據幀(python-3.6)執行矢量化計算時發生崩潰。

例如,我有一個帶有2列A,B的數據框。 我想創建一個將為C = A-B的列C。但是,列A中的一個單元格是一個字符串,這會導致TypeError。 看看下面的圖片。

數據框示例

C列是我想要實現的結果。

當前,我收到類型錯誤消息:

TypeError: unsupported operand type(s) for -: 'float' and 'str'

這是預期的。

可以通過numpy.select ,但是在輸出中得到混合值:

df = pd.DataFrame({
         'A':[7,8,9,10,5],
         'B':[1,2,3,'str',np.nan],
})

b = pd.to_numeric(df['B'], errors='coerce')
df['C'] = np.select([df['B'].isna(), b.isna()], [np.nan, 'ERROR'], default=df['A'] - b)
print (df)
    A    B      C
0   7    1    6.0
1   8    2    6.0
2   9    3    6.0
3  10  str  ERROR
4   5  NaN    nan

最好是使用to_numeric將其轉換為數值,並且僅在以后需要處理列時才減去:

b = pd.to_numeric(df['B'], errors='coerce')
df['C'] = df['A'] - b
print (df)
    A    B    C
0   7    1  6.0
1   8    2  6.0
2   9    3  6.0
3  10  str  NaN
4   5  NaN  NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM