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。
答案 0 :(得分:2)
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')}))