我想在使用“應用”功能np.nan時用其他值替換值。pandas.DataFrame我將使用將replaceNaN 替換為每列的最大值(軸 = 0)的方法。你最好在下面理解。
import pandas as pd
df = pd.DataFrame({'a':[1, np.nan, 3],
'b':[np.nan,5,6],
'c':[7,8,np.nan]})
result = df.apply(lambda c: c.replace(np.nan, max(c)), axis=0)
print(result)
有三個np.nan值。其中兩個替換為適當的值,但仍然只有一個值np.nan(下圖)

將引數設定axis為后1,仍有一個值未被替換。什么原因?
uj5u.com熱心網友回復:
如果串列以 NaN 開頭,則Pythonmax不起作用;所以max(df['b'])回傳NaN,它不能填充該列中的 NaN 值。改為使用c.max()(因為默認會Series.max跳過 NaN)。所以:
df = df.apply(lambda c: c.replace(np.nan, c.max()), axis=0)
但是replace,您可以fillna在軸上使用:
df = df.fillna(df.max(), axis=0)
輸出:
a b c
0 1.0 6.0 7.0
1 3.0 5.0 8.0
2 3.0 6.0 8.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/436429.html
