我有一列資料型別為“o”。它有數字,還有字串。例如:
| 天 |
|---|
| 5 |
| 10 |
| 15 |
| 7 |
| 沒有可用的銷售資料 |
| 9 |
我正在嘗試使用 np.where 創建一個單獨的列,其中我將代碼撰寫為
np.where(df['Days']=='No Sales Data available','No Sales',np.where(df['Days']<=10, 'Less than 10 days Sales','More than 10 Days Sales'))
自然,由于混合資料型別,代碼會出現問題。知道如何解決這種情況嗎?
uj5u.com熱心網友回復:
您可以以這種方式重寫您的陳述句,這將保留您的“天”列的資料型別。
df['new'] = np.where(pd.to_numeric(df['Days'],errors='coerce').isna(),'No Sale',
np.where(pd.to_numeric(df['Days'],errors='coerce') <= 10,
'Less than 10 days Sales','More than 10 Days Sales'))
print(df)
Days new
0 5 Less than 10 days Sales
1 10 Less than 10 days Sales
2 15 More than 10 Days Sales
3 7 Less than 10 days Sales
4 No Sales Data available No Sale
5 9 Less than 10 days Sales
如果您不介意更改列的型別,您可以先轉換為數字并遵循類似的邏輯:
df['Days'] = pd.to_numeric(df['Days'],errors='coerce')
df['new'] = np.where(df['Days'].isna(),'No Sale',np.where(df['Days']<=10,'Less than 10 days Sales','More than 10 Days Sales'))
print(df)
Days new
0 5.0 Less than 10 days Sales
1 10.0 Less than 10 days Sales
2 15.0 More than 10 Days Sales
3 7.0 Less than 10 days Sales
4 NaN No Sale
5 9.0 Less than 10 days Sales
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424183.html
