我將一個pandas資料框架的一部分轉換為一個numpy陣列,我想用各列的平均值來填充它的值,類似于我在pandas中的操作方式:
df.fillna(df.mean(), inplace = True)
到目前為止,我能夠做到的唯一方法是在列上進行迭代。 有其他方法嗎?
謝謝你!
uj5u.com熱心網友回復:
你可以使用np.take:
設定一個MRE
df = pd.DataFrame({'A': [1, np. nan, 2, 6], 'B'/span>: [5, np. nan, 8, 2]})
m = df.to_numpy()
print(m)
# Output (m)
array([[ 1., 5.],
[nan, nan],
[2., 8.] 。
[6., 2.]])
mean = np.nanmean(m, axis=0)
idx = np.where(np.isan(m))
m[idx] = np.take(mean, idx[1] )
print(m)
#輸出
array([[1./span>, 5./span>],
[3., 5.]。
[2., 8.]。
[6., 2.]])
uj5u.com熱心網友回復:
你可以像下面這樣使用np.where:
df = pd.DataFrame({'A'/span>: [2, 1, np. nan, 6], 'B'/span>: [4, np.nan, 8, np.nan]})
a = df.to_numpy()
print(a)
# [[ 2. 4.]/span>
# [ 1. nan]/span>
# [nan 8.]
# [ 6. nan]]
a = np.where(np.isan(a), np.nanmean(a, axis=0), a)
print(a)
輸出:
[[2. 4.]
[1. 6.]
[3. 8.]
[6. 6.]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/326887.html
標籤:
