如何在DataFrame中当A列为NULL时将B列设为NULL?
如何在Pandas中根据A列的NULL值将对应行的B列设为NULL?
这是个很常见的数据清洗需求,用Pandas可以轻松实现,下面给你几种实用的方法,你可以根据自己的习惯选择:
方法1:使用loc直接定位赋值(最直观)
这种方法通过布尔索引定位到A列为空的行,然后直接将对应B列的值设为NaN(Pandas中代表NULL):
import pandas as pd import numpy as np # 创建示例DataFrame df = pd.DataFrame({ 'A': [np.nan, 3, 5, np.nan], 'B': [1, 4, 3, 2], 'C': [2, 3, 1, 6] }) # 核心处理代码 df.loc[df['A'].isnull(), 'B'] = np.nan
方法2:使用where函数(向量化操作)
where会保留满足条件的原始值,不满足的替换为指定值。这里我们保留A列不为空时的B值,否则替换为NaN:
df['B'] = df['B'].where(df['A'].notnull(), np.nan)
方法3:使用mask函数(和where逻辑相反)
mask的逻辑是满足条件时替换值,刚好和where相反,这里当A列为空时,把B列替换为NaN:
df['B'] = df['B'].mask(df['A'].isnull(), np.nan)
处理后的结果
执行任意一种方法后,打印DataFrame都会得到你期望的结果:
A B C 0 NaN NaN 2 1 3.0 4.0 3 2 5.0 3.0 1 3 NaN NaN 6
这些方法都是Pandas的向量化操作,处理大规模数据时效率很高,比逐行循环处理快得多。
内容的提问来源于stack exchange,提问作者summersmd
相关产品推荐
相关产品推荐

