如何基于Pandas数据框中A列的NaN值创建新列B?
解决方案
你可以直接使用Pandas内置的方法快速生成所需的布尔列,以下是两种简洁高效的实现方式:
方法1:使用notna()
notna()方法会直接返回对应元素是否为非缺失值的布尔结果,正好匹配你的需求:
import pandas as pd import numpy as np # 构造示例数据框 df = pd.DataFrame({'A': [5, 1, np.nan, 12, 13, np.nan, np.nan]}) # 创建新列B df['B'] = df['A'].notna() print(df)
运行后输出结果:
| A | B | |
|---|---|---|
| 0 | 5.0 | True |
| 1 | 1.0 | True |
| 2 | NaN | False |
| 3 | 12.0 | True |
| 4 | 13.0 | True |
| 5 | NaN | False |
| 6 | NaN | False |
方法2:使用isna()取反
如果你习惯用isna()判断缺失值,也可以通过取反操作得到相同结果:
df['B'] = ~df['A'].isna()
两种方法效果完全一致,notna()更直观地表达“非缺失值”的判断逻辑,推荐优先使用。
内容的提问来源于stack exchange,提问作者scmdude
相关产品推荐
相关产品推荐

