Python 如果两个不同列中的两个值均为NaN,则为0,否则为1
我的数据框架如下所示: 自报价格自报价格 0200-05-0311:59:48.627436南0.08331 1 2020-05-03 11:59:36.286763 0.08367 0.08331 2020-05-03 11:59:24.279036 0.08367南 3 2020-05-03 11:59:12.298755楠楠楠 我试图实现的是,如果两列都是NaN,那么在第三列中,该行的值为0,否则为1 因此,输出应如下所示:Python 如果两个不同列中的两个值均为NaN,则为0,否则为1,python,pandas,Python,Pandas,我的数据框架如下所示: 自报价格自报价格 0200-05-0311:59:48.627436南0.08331 1 2020-05-03 11:59:36.286763 0.08367 0.08331 2020-05-03 11:59:24.279036 0.08367南 3 2020-05-03 11:59:12.298755楠楠楠 我试图实现的是,如果两列都是NaN,那么在第三列中,该行的值为0,否则为1 因此,输出应如下所示: ts self_top_ask_price self_
ts self_top_ask_price self_top_bid_price both
0 2020-05-03 11:59:48.627436 NaN 0.08331 1
1 2020-05-03 11:59:36.286763 0.08367 0.08331 1
2 2020-05-03 11:59:24.279036 0.08367 NaN 1
3 2020-05-03 11:59:12.298755 NaN NaN 0
我尝试了以下方法,但没有效果。你知道吗
metrics[['self_top_ask_price', 'self_top_bid_price']] = metrics['both'].applymap(lambda x: 0 if pd.isnull(x) else 1)
谢谢 检查两列,如果没有缺少值,则使用以下方法将其转换为数字
0,1
映射布尔值:
或通过:
metrics['both'] = (metrics[['self_top_ask_price', 'self_top_bid_price']].notna()
.any(axis=1)
.astype(int))
metrics['both'] = (metrics[['self_top_ask_price', 'self_top_bid_price']].notna()
.any(axis=1)
.view('i1'))
print (metrics)
ts self_top_ask_price self_top_bid_price both
0 2020-05-03 11:59:48.627436 NaN 0.08331 1
1 2020-05-03 11:59:36.286763 0.08367 0.08331 1
2 2020-05-03 11:59:24.279036 0.08367 NaN 1
3 2020-05-03 11:59:12.298755 NaN NaN 0