替换DataFrame指定列区间缺失值无报错但未生效求助
问题原因与解决方案
你的代码没生效是因为data["Group"].loc[57:70]返回的是原DataFrame的副本而非视图,调用replace(inplace=True)只修改了这个临时副本,原data根本没被改动,所以缺失值数量不变。
正确写法
直接针对原DataFrame的切片进行赋值操作,确保修改作用在原数据上:
方法1:用replace赋值
data.loc[57:70, "Group"] = data.loc[57:70, "Group"].replace(np.nan, "Lan") data.loc[89:102, "Group"] = data.loc[89:102, "Group"].replace(np.nan, "Act")
方法2:用fillna更直观(专门处理缺失值)
data.loc[57:70, "Group"] = data.loc[57:70, "Group"].fillna("Lan") data.loc[89:102, "Group"] = data.loc[89:102, "Group"].fillna("Act")
补充说明
Pandas中切片返回视图还是副本没有绝对规律,取决于数据存储结构、索引类型等因素。避免依赖临时变量修改数据,直接通过原DataFrame的loc/iloc进行赋值,是最稳妥的做法。
内容的提问来源于stack exchange,提问作者Shane Gerami
相关产品推荐
相关产品推荐

