我有一个熊猫df:
pd.DataFrame({'61 - 90': [np.NaN, 14, np.NaN, 9, 34, np.NaN],
'91 and over': [np.NaN, 10, np.NaN, 1, np.NaN, 9]})
我正在尝试应用lambda函数,如果记录的两个列都== np.NaN,则该函数返回False。我试图解决这个问题:
df['not_na'] = df[['61 - 90', '91 and over']].apply(lambda x: False if pd.isna(x) else True)
我收到的错误消息:
ValueError :(“系列的真值不明确。请使用a.empty,a.bool(),a.item(),a.any()或a.all()。”,“发生于索引61-90')
答案 0 :(得分:2)
为什么不这样做:
df['not_na'] = df[['61 - 90', '91 and over']].notnull().any(axis=1)
答案 1 :(得分:0)
在数据帧上使用lambda函数执行此操作用于逐元素操作。我们需要使用applymap
df[['61 - 90', '91 and over']].applymap(lambda x: False if pd.isna(x) else True)
applymap功能的文档位于下面的链接中 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.applymap.html