簡體   English   中英

熊貓填充 DataFrame 部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM