如何将DataFrame指定列的特定值替换为另一列对应值?

问题说明
- 此处的
'None'为字符串类型值,无法使用.fillna()方法处理 - 已可通过
df[df['TRIPLINE'] == 'None']筛选出TRIPLINE列取值为字符串'None'的行 - 需求:将上述行中
TRIPLINE列的字符串'None'值,替换为对应行LINE列的取值
解决方案
优先使用loc定位赋值,写法稳妥不会触发链式赋值警告,代码如下:
# 匹配TRIPLINE为字符串'None'的行,将对应位置的值替换为同行LINE列的取值 df.loc[df['TRIPLINE'] == 'None', 'TRIPLINE'] = df['LINE']
也可以使用mask方法实现同等效果:
df['TRIPLINE'] = df['TRIPLINE'].mask(df['TRIPLINE'] == 'None', df['LINE'])
注意事项
- 替换前建议先执行
df['TRIPLINE'].unique(),确认目标字符串'None'不存在大小写差异、前后多余空格的情况,避免条件匹配失效 - 不要使用
df[df['TRIPLINE'] == 'None']['TRIPLINE'] = df['LINE']这类链式索引写法,会触发SettingWithCopyWarning,且不会实际修改原DataFrame的数值
内容的提问来源于stack exchange,提问作者python_beginner555
相关产品推荐
相关产品推荐

