python - Python,为什么这个 lambda 函数不正确?
问题描述
flight_data 是熊猫中的数据框:
for c in flight_data.columns:
if ('Delay' in c):
flight_data[c].fillna(0, inplace = True)
如何使用 lambda 函数在 1 行中执行此操作?
map(lambda c: flight_data[c].fillna(0, inplace = True), list(filter(lambda c : 'Delay' in c, flight_data.columns)))
为什么这两个不等价?
打印出数据时,NaN 不会被 0 代替。
解决方案
不要使用lambda
lambda
只在这里混淆逻辑。只需指定范围内的列并fillna
直接使用:
cols = df.filter(like='Delay').columns
df[cols] = df[cols].fillna(0)
如何使用 lambda 函数在 1 行中执行此操作?
但是要回答您的问题,您可以在不依赖于副作用map
或列表理解的情况下做到这一点:
df = df.assign(**df.pipe(lambda x: {c: x[c].fillna(0) for c in x.filter(like='Delay')}))
推荐阅读
- sql-server - SQL Server 语法失败
- java-8 - 如何将带有谓词接口的通用列表转换为 Lambda 表达式?
- apache-spark - 通过 pyspark 连接 hive thift 服务器
- swift - 图片未使用 Alamofire 和 swift 以 base64 格式上传
- python - Flask-SQLAlchemy中使用startswith运算符的动态过滤器
- node.js - linux服务器错误中require模块的相对路径:找不到模块
- .net - Dotnet 包 ProjectReferences 和 PackageReferences
- reactjs - 如何从reactjs中的语音命令模型的结果中识别标签?
- javascript - 为什么我的 React Dates 组件不起作用?
- android - 如何在不同条件下设置请求代码,让我的活动绕过 onActivityResult?