You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Pandas中基于DataFrame其他列生成指定规则的新列?

实现方法

嘿,这事儿好办!我给你准备了几种简洁的方法来实现你想要的效果,咱们一起来看看~

首先,先还原你的原始数据:

import pandas as pd
import numpy as np

data = pd.DataFrame({"col1" : ["a", "b", "c"], "binary" : [0, 1, 0]})

方法一:使用np.where(最直观)

np.where可以根据条件直接映射值,语法非常清晰:

data['new'] = np.where(data['binary'] == 1, data['col1'], np.nan)

解释:当binary列的值等于1时,新列new取col1的对应值;否则设置为np.nan。

方法二:使用loc索引赋值

先给新列统一初始化NaN,再针对性替换符合条件的行:

data['new'] = np.nan
data.loc[data['binary'] == 1, 'new'] = data['col1']

这种方法逻辑很直白,先把所有行的new列设为缺失值,再把binary为1的行替换成col1的值。

方法三:使用pandas的where/mask方法

pandas自身的where和mask方法也能轻松实现:

  • 用where:保留满足条件的值,不满足的替换为NaN
data['new'] = data['col1'].where(data['binary'] == 1, np.nan)
  • 用mask:把满足条件(这里是binary !=1)的值替换为NaN
data['new'] = data['col1'].mask(data['binary'] != 1, np.nan)

最终结果

执行任意一种方法后,你的DataFrame都会变成:

col1  binary  new
0    a       0  NaN
1    b       1    b
2    c       0  NaN

内容的提问来源于stack exchange,提问作者dingaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:36:40