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

如何在Pandas中基于现有列值为DataFrame新增条件赋值列

给DataFrame新增条件列A的实现方案

嘿,我来帮你搞定这个需求!你需要给包含fromnode、vianode、tonode、angle四列的DataFrame新增一列A,按照指定的角度区间赋值对吧?我给你两种简洁的实现方法,都能完美满足你的要求。

方法一:使用numpy.select(推荐,逻辑清晰)

这个方法可以明确列出每个条件对应的赋值,可读性很强,适合多条件分支的场景:

import pandas as pd
import numpy as np

# 假设你的DataFrame名为df
conditions = [
    (df['angle'] > 0) & (df['angle'] < 90),
    (df['angle'] > 180) & (df['angle'] < 270)
]
choices = [1, 2]

df['A'] = np.select(conditions, choices, default=np.nan)

代码解释:

  • 首先定义两个条件列表:第一个是angle在(0,90)区间,第二个是angle在(180,270)区间
  • choices对应每个条件的赋值结果,顺序和conditions一一对应
  • default=np.nan表示不满足任何条件时,赋值为NA(在pandas里np.nan就是缺失值的标准表示)

方法二:使用pd.cut(适合区间划分场景)

如果你的需求是基于连续区间的划分,pd.cut也是个不错的选择:

import pandas as pd

# 定义区间和对应的标签
bins = [-np.inf, 0, 90, 180, 270, np.inf]
labels = [np.nan, 1, np.nan, 2, np.nan]

df['A'] = pd.cut(df['angle'], bins=bins, labels=labels, include_lowest=False)
# 把结果转为数值类型(可选,因为cut默认返回分类类型)
df['A'] = df['A'].astype(float)

输入输出示例

输入DataFrame:

fromnodevianodetonodeangle
361120140
36356190
406714575
403343250
345185456290

处理后的输出DataFrame:

fromnodevianodetonodeangleA
361120140NaN
363561902
4067145751
4033432502
345185456290NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:58:10