Pandas中如何基于第三列的值从两列选值生成新列
Pandas按条件选择列生成新列的实现方案
针对C列小于0.5取B、否则取A生成新列D的需求,有以下几种常用实现方式:
- 方法1:使用
numpy.where(推荐优先使用,效率高、写法简洁)
适合二分类条件判断场景,无需复杂逻辑,运行效率远高于行遍历方法。
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame({ "A": [1, 3, 5, 7, 9], "B": [2, 4, 6, 8, 10], "C": [0.2, 0.7, 0.4, 0.9, 0.1] }) # 生成新列D df["D"] = np.where(df["C"] < 0.5, df["B"], df["A"])
- 方法2:使用Pandas原生
loc索引(无需额外依赖numpy)
逻辑直观易读,适合不想引入第三方依赖的场景。
# 先默认给D列赋值为A列的值 df["D"] = df["A"] # 替换满足C<0.5的行的D列为B列值 df.loc[df["C"] < 0.5, "D"] = df["B"]
- 方法3:使用
apply行遍历(适合复杂判断逻辑,小数据量可用)
灵活度最高,但逐行遍历开销大,大数据量下不推荐使用。
df["D"] = df.apply(lambda row: row["B"] if row["C"] < 0.5 else row["A"], axis=1)
内容的提问来源于stack exchange,提问作者Peaceful
相关产品推荐
相关产品推荐

