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