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

基于其他列条件为Pandas DataFrame创建新列的方法

没问题,我来给你演示几种基于现有列条件创建新列的常用方法,结合你给出的DataFrame来举例,这样更直观。

首先先回顾下你的原始数据(先把导入和数据定义写清楚):

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "A": ["2002-01-12","2002-01-12","2002-01-12","2002-01-13","2002-01-13","2002-01-13","2002-01-16","2002-01-16","2002-01-16"], 
    "B": ["12:00:00", "13:00:00", "14:00:00","11:00:00", "12:00:00", "13:00:00", "10:00:00", "11:00:00", "12:00:00"], 
    "C": [3,19,15,6,1,5,3,12,8]
})

1. 用np.where处理简单二元条件

适合只有「是/否」两种结果的场景,比如我们想创建一个is_early列,标记时间B早于12:00:00的行:

df['is_early'] = np.where(df['B'] < '12:00:00', True, False)

逻辑很直白:np.where(判断条件, 满足条件时的值, 不满足时的值)。这里直接比较时间字符串就行,因为你的时间是HH:MM:SS格式,字符串比较是有效的。

生成的结果片段:

ABCis_early
32002-01-1311:00:006True
62002-01-1610:00:003True

2. 用df.loc做灵活的条件赋值

如果需要给不同条件的行设置不同值,或者只修改特定行,loc是个好工具。比如我们想创建day_type列,给特定日期标记星期:

# 先初始化列的默认值
df['day_type'] = '其他'
# 给符合条件的行赋值
df.loc[df['A'] == '2002-01-12', 'day_type'] = '周一'
df.loc[df['A'] == '2002-01-13', 'day_type'] = '周二'

语法是df.loc[行筛选条件, 目标列名] = 赋值内容,分步处理多条件非常清晰。


3. 用np.select处理多条件多结果

如果有多个条件对应不同的结果,嵌套np.where会很臃肿,用np.select更清爽。比如根据C列的值创建level等级列:

# 定义条件列表和对应的结果列表
conditions = [
    df['C'] > 10,          # 条件1:C大于10
    (df['C'] >=5) & (df['C'] <=10), # 条件2:C在5-10之间
    df['C'] <5             # 条件3:C小于5
]
results = ['高', '中', '低'] # 对应每个条件的结果

df['level'] = np.select(conditions, results, default='未知')

它会按顺序检查条件,第一个满足的条件对应的结果会被选中,default是所有条件都不满足时的兜底值。注意多条件要用&(且)/|(或)连接,每个条件要加括号避免优先级问题。

生成的level列结果:低、高、高、中、低、中、低、高、中


4. 用apply处理复杂自定义逻辑

如果你的条件逻辑特别复杂,没法用向量方法简洁表达,可以用apply结合自定义函数。比如结合日期和时间创建time_slot列:

def get_time_slot(row):
    if row['A'] == '2002-01-12' and row['B'] == '12:00:00':
        return '时段1'
    elif row['A'] == '2002-01-13' and row['B'] == '11:00:00':
        return '时段2'
    else:
        return '其他时段'

# axis=1表示按行处理,把每一行数据传入函数
df['time_slot'] = df.apply(get_time_slot, axis=1)

不过要注意:apply的效率比前面的向量方法低,如果你的DataFrame数据量很大,优先用前三种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:26:00