python - Pandas replace 对列的某些值起作用,而不对其他值起作用
问题描述
我需要用 NA 替换数据框的某些列。但是,我可以部分这样做,列中的某些值不会转换为 NA。
这是您可以处理的示例数据框:
df = pd.DataFrame({'away_score': {672: 2.0,
673: 1.0,
674: 2.0,
675: 2.0,
676: 1.0,
677: 1.0,
678: 2.0,
679: 1.0,
680: 1.0,
681: 2.0},
'home_score': {672: 2.0,
673: 2.0,
674: 3.0,
675: 0.0,
676: 0.0,
677: 2.0,
678: 2.0,
679: 1.0,
680: 2.0,
681: 2.0},
'match_id': {672: 273236,
673: 273234,
674: 273239,
675: 273231,
676: 273232,
677: 273238,
678: 273237,
679: 273240,
680: 273233,
681: 273235},
'match_status': {672: 'Finished',
673: 'Finished',
674: 'Finished',
675: 'Finished',
676: 'Finished',
677: 'Finished',
678: 'Finished',
679: 'Finished',
680: 'Finished',
681: 'Finished'}})
到目前为止我的代码:
columns_to_fillna = ["match_status","home_score","away_score"]
for column in columns_to_fillna:
df[column] = df[column].apply(lambda row: df[column].replace(row,np.nan))
这以某种方式更改了 home_score 和 away_score 列的某些行,并且某些行保持不变。这里可能是什么问题?
解决方案
>>> columns_to_fillna = ["match_status","home_score","away_score"]
>>> df.replace(df[columns_to_fillna], np.nan)
away_score home_score match_id match_status
672 NaN NaN 273236 NaN
673 NaN NaN 273234 NaN
674 NaN NaN 273239 NaN
675 NaN NaN 273231 NaN
676 NaN NaN 273232 NaN
677 NaN NaN 273238 NaN
678 NaN NaN 273237 NaN
679 NaN NaN 273240 NaN
680 NaN NaN 273233 NaN
681 NaN NaN 273235 NaN
推荐阅读
- python - 在排序一个列表期间将不同列表中的相关元素保持在一起
- c# - 如何对通用列表对象进行排序
- javascript - 向和从 js 服务器发送数据的基本方法?
- json - 使用 Pyspark 处理 JSON 结构
- amazon-web-services - 为什么角色假设应该在 lambda 内部完成?
- html - 如何将数值绑定到 CSS 以创建时间线?
- docker - 如何为 docker compose 环境变量设置运行时变量
- javascript - 仅在 Javascript 中具有不同段落的动态 Div
- tsql - 表格模型中的测量列未在浏览器中显示正确的值
- javascript - 调用此函数时如何获取返回值?