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

Pandas按条件提取列值生成新列问题求助

解决方法

优先用Pandas矢量化操作(不推荐循环)

Pandas的核心优势是矢量化运算,比循环高效且不易出错,推荐以下两种方法:

方法1:使用np.where(简洁直观)

import numpy as np
import pandas as pd

# 假设你的DataFrame名为df
df['temperature'] = np.where(df['sensor'] == 'temperature', df['timestamp'], 'not related')

逻辑:当sensor列值为'temperature'时,取当前行的timestamp值;否则填充'not related'。

方法2:使用df.loc分步赋值(更易理解)

# 先给新列统一赋值默认值
df['temperature'] = 'not related'
# 筛选出sensor为temperature的行,将对应位置的temperature列替换为timestamp
df.loc[df['sensor'] == 'temperature', 'temperature'] = df['timestamp']

为什么你的循环会出错?

你可能写出了类似下面的错误代码:

# 错误示例
df['temperature'] = ''
for idx, row in df.iterrows():
    if row['sensor'] == 'temperature':
        # 错误:这里把整个temperature列赋值为所有timestamp,而非当前行的单一值
        df['temperature'] = df['timestamp']
    else:
        df['temperature'] = 'not related'

即使修正为df.loc[idx, 'temperature'] = row['timestamp'],循环在处理大数据量时效率极低,所以始终优先选择矢量化方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:10:35