不要使用
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')}))