python - 除非 B 列的值为 NaN,否则如何将 A 列的所有值替换为 B 列的值?
问题描述
给定以下数据框:
import numpy as np
import pandas as pd
df = pd.DataFrame({"ColA": [1, 2, np.nan, 4, np.nan],
"ColB": [np.nan, 7, np.nan, 9, 10]})
ColA ColB
0 1.0 NaN
1 2.0 7.0
2 NaN NaN
3 4.0 9.0
4 NaN 10.0
我想用 ColB 的值替换 ColA 的值,但我从不希望用 NaN 值替换非 NaN 值。我想要的输出是以下 DataFrame:
ColA ColB
0 1.0 NaN
1 7.0 7.0
2 NaN NaN
3 9.0 9.0
4 10.0 10.0
我的实际数据非常大,所以虽然我知道我可以逐行迭代,但我正在寻找一种更有效的方法。
解决方案
df['ColA']= np.where(df['ColA'].notna(), np.where(df['ColB'].isna(),df['ColA'],df['ColB']), df['ColA'])
推荐阅读
- javascript - 表单输入元素与反应页面的 URL 混淆
- javascript - 使用 html css javascript & Jquery 聊天机器人应用程序中的语音气泡
- python - 两个函数之间的全局变量的范围是什么
- javascript - 如何从 Google Sheet 中的列值分配对象?
- python - 有没有办法从单个 xlsx 读取多个 excel 选项卡/工作表到多个数据框,每个数据框都以工作表名称命名?
- java - Android与纯Java的不同加密 - RSA/ECB/OAEPWithMD5AndMGF1Padding
- vue.js - 使用 vue.js 和 Airtable 的多个 axios 请求
- css - 如何为 iPad 应用媒体查询?
- java - apache tomcat 中未显示 ajp/1.3 端口号
- r - R Shiny 中使用多变量的子集数据