[英]Pandas ffill on section of DataFrame
我正在嘗試轉發填充 DataFrame 的過濾部分,但它沒有按我希望的方式工作。
我的 df 看起來像這樣:
Col Col2
0 1 NaN
1 NaN NaN
2 3 string
3 NaN string
我希望它看起來像這樣:
Col Col2
0 1 NaN
1 NaN NaN
2 3 string
3 3 string
這是我當前的代碼:
filter = (df["col2"] == "string")
df.loc[filter, "col"].fillna(method="ffill", inplace=True)
但是我的代碼根本沒有改變 df 。 非常感謝任何反饋
我不確定我是否理解您的問題,但如果您想填寫 NAN 值或任何值,您應該使用 Simple imputer
from sklearn.impute import SimpleImputer
然后,您可以定義一個用特定策略填充這些缺失值/NAN 的 imputer。 例如,如果你想用所有列的平均值填充這些值,你可以這樣寫:
imputer=SimpleImputer(missing_values=np.nan, strategy= 'mean')
或者,如果您將 NaN 作為字符串,則可以這樣寫
imputer=SimpleImputer(missing_values="NaN", strategy= 'mean')
如果你想用特定的值填充它,你可以這樣做:
imputer=SimpleImputer(missing_values=np.nan, strategy= 'constant', fill_value = "YOUR VALUE")
然后你可以這樣使用它
df[["Col"]]=imputer.fit_transform(df[["Col"]])
我們可以使用布爾索引來過濾Col2 = 'string'
的Col
部分,然后向前填充並僅更新該部分中的值
m = df['Col2'].eq('string')
df.loc[m, 'Col'] = df.loc[m, 'Col'].ffill()
Col Col2
0 1.0 NaN
1 NaN NaN
2 3.0 string
3 3.0 string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.