Python,为什么这个lambda函数不正确



flight_data是panda中的数据帧:

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函数在一行中完成此操作?

但要回答您的问题,您可以在不依赖map的副作用或列表理解的情况下这样做

df = df.assign(**df.pipe(lambda x: {c: x[c].fillna(0) for c in x.filter(like='Delay')}))

最新更新