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

时间:2018-10-27 14:54:14

标签: python python-3.x pandas dataframe

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。

1 个答案:

答案 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')}))