如何在DataFrame中根据条件添加标记列
实现DataFrame按条件添加Flag列
原始数据
ID time-A time-B time-C A 30 40 50 B NULL 60 50 C 30 20 50
需求
新增Flag列:
- 当
time-A为NULL 且time-B/time-C ≥ 1时,标记为'Y' - 其他情况标记为
'N'
期望结果
ID time-A time-B time-C Flag A 30 40 50 N B NULL 60 50 Y C 30 20 50 N
解决方案(基于Pandas)
步骤1:构造DataFrame
将原始数据转为Pandas可处理的格式(原始NULL对应Pandas中的NaN):
import pandas as pd import numpy as np df = pd.DataFrame({ 'ID': ['A', 'B', 'C'], 'time-A': [30, np.nan, 30], 'time-B': [40, 60, 20], 'time-C': [50, 50, 50] })
步骤2:生成Flag列
用np.where()批量判断条件,高效生成目标列:
df['Flag'] = np.where( (pd.isna(df['time-A'])) & ((df['time-B'] / df['time-C']) >= 1), 'Y', 'N' )
验证结果
执行后打印df即可得到期望输出:
print(df)
说明
pd.isna()用于准确识别time-A列的空值(对应原始数据的NULL)- 逻辑与操作符
&确保两个条件同时满足 np.where()比df.apply()的循环处理效率更高,适合批量数据
内容的提问来源于stack exchange,提问作者MemeFast King
相关产品推荐
相关产品推荐

