如何將 numpy 陣列中的 nan 替換為空白或空字串。我用谷歌搜索它,它還在熊貓資料框中而不是 numpy 陣列中與 nan 相關。
uj5u.com熱心網友回復:
一個陣列np.nan將是 float dtype(我們不在這里談論objectdtypes :))
In [274]: arr = np.array([1,2,np.nan, 4,np.nan])
In [275]: arr
Out[275]: array([ 1., 2., nan, 4., nan])
In [277]: arr[[2,4]]
Out[277]: array([nan, nan])
我們不能用字串替換此類陣列中的任何值!
In [278]: arr[[2,4]] = ' '
Traceback (most recent call last):
Input In [278] in <cell line: 1>
arr[[2,4]] = ' '
ValueError: could not convert string to float: ''
但是,如果我們首先將 float dtype 轉換為字串:
In [279]: sarr = arr.astype(str)
In [280]: sarr
Out[280]: array(['1.0', '2.0', 'nan', '4.0', 'nan'], dtype='<U32')
In [281]: sarr[[2,4]] = ' '
In [282]: sarr
Out[282]: array(['1.0', '2.0', ' ', '4.0', ' '], dtype='<U32')
在字串 dtype 陣列中,'nan'并不特殊,不像在浮點數中。
我們必須使用isnan來識別 float nan:
In [283]: np.isnan(arr)
Out[283]: array([False, False, True, False, True])
In [284]: np.nonzero(np.isnan(arr))
Out[284]: (array([2, 4]),)
但使用普通==測驗字串'nan':
In [285]: sarr = arr.astype(str)
In [286]: sarr == 'nan'
Out[286]: array([False, False, True, False, True])
幾個答案建議使用熊貓 - 如:
In [287]: S = pd.Series(arr)
In [288]: S
Out[288]:
0 1.0
1 2.0
2 NaN
3 4.0
4 NaN
dtype: float64
In [289]: S.replace?
In [290]: S.replace(np.nan, ' ')
Out[290]:
0 1.0
1 2.0
2
3 4.0
4
dtype: object
請注意更改 dtype - 從浮動到物件。在這種情況下,系列包含浮點數和字串。
In [292]: _.to_numpy()
Out[292]: array([1.0, 2.0, ' ', 4.0, ' '], dtype=object)
uj5u.com熱心網友回復:
試試這個:
dfCopy = df.replace(np.nan, '', regex=True)
在此處查看替換檔案
uj5u.com熱心網友回復:
您可以使用內置函式來替換特定值,例如:
import numpy as np
arr = np.array((np.nan, 1, 0, np.nan, -42))
arr[np.isnan(arr)] = -100
print(arr)
輸出將是:
array([-100., 1., 0., -100., -42.])
注意:您應該注意替換np.nan的值,因為它應該與陣列的型別相同(即,如果您的陣列是型別str,則可以用空字串替換)。
uj5u.com熱心網友回復:
您可以使用np.where()方法以這種方式執行此操作:
a = np.array([[nan, 2], [3, nan]])
a = np.where(np.isnan(a), '', a)
print(a)
輸出:
[['' '2.0']
['3.0' '']]
Process finished with exit code 0
此外,如果你想用一個數值替換它,你可以使用np.nan_to_num()方法:
a = np.array([[nan, 2], [3, nan]])
a = np.nan_to_num(a, nan=0)
print(a)
輸出:
[[0. 2.]
[3. 0.]]
Process finished with exit code 0
uj5u.com熱心網友回復:
使用 fillna np 方法:
前任:
df2 = df.fillna("")
您還可以將 berween numpy 陣列轉換為 dataFram,如下所示:
df = pd.DataFrame(numpy_array)
有關更多資訊,請查看以下內容: https ://sparkbyexamples.com/pandas/pandas-replace-nan-with-blank-empty-string/#:~:text=Convert Nan to Empty String,in the% 20Pandas DataFrame column。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464601.html
