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

如何使用pandas的df.loc[]满足指定条件时替换DataFrame列值?

当然可以用df.loc[]实现这个需求!

不过先提个小细节:你当前数据里的'NaN'/'Nan'是字符串类型,不是pandas能识别的真正缺失值np.nan,所以第一步得先把这些字符串转成真正的缺失值,不然后续的非空判断会失效。

完整实现步骤:

  1. 先将字符串形式的缺失值转换为np.nan
  2. 使用df.loc[]定位满足条件的行,替换type列的值
import pandas as pd
import numpy as np

data = {'type': ['place', 'home', 'place', 'walk', 'place', 'work', 'home', 'place'],
        'labels': ['NaN', 'NaN', 'shop', 'Nan', 'clinic', 'NaN', 'NaN', 'NaN']}
a = pd.DataFrame(data, columns=['type', 'labels'])

# 第一步:把字符串形式的NaN/Nan转成真正的np.nan
a['labels'] = a['labels'].replace(['NaN', 'Nan'], np.nan)

# 第二步:用loc定位条件行,替换type的值
a.loc[(a['labels'].notna()) & (a['type'] == 'place'), 'type'] = a['labels']

# 查看结果
print(a)

执行结果:

type  labels
0    place     NaN
1     home     NaN
2     shop    shop
3     walk     NaN
4   clinic  clinic
5     work     NaN
6     home     NaN
7    place     NaN

可以看到,满足labels非空且type为place的行(第2、4行),type已经被成功替换成了labels的值,其他行保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:25:09