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

DataFrame过滤:将不含%G%或%P%的水果值替换为NaN

问题描述

对DataFrame中的Fruit1、Fruit2、Fruit3列执行过滤操作:

  • 保留包含字符P或G的水果值
  • 不满足条件的替换为NaN

原始数据

Unique IDFruit1Fruit2Fruit3
1234BananaPeachGuava
1235OrangeGrapeNaN
1236PearPapayaApricot
1237GuavaNaNNaN
1238KiwiCherryPeach

期望结果

Unique IDFruit1Fruit2Fruit3
1234NaNPeachGuava
1235NaNGrapeNaN
1236PearPapayaNaN
1237GuavaNaNNaN
1238NaNNaNPeach

解决方案

使用Pandas的字符串匹配与条件替换实现需求,代码如下:

import pandas as pd

# 构建原始数据集
data = {
    'Unique ID': [1234, 1235, 1236, 1237, 1238],
    'Fruit1': ['Banana', 'Orange', 'Pear', 'Guava', 'Kiwi'],
    'Fruit2': ['Peach', 'Grape', 'Papaya', pd.NA, 'Cherry'],
    'Fruit3': ['Guava', pd.NA, 'Apricot', pd.NA, 'Peach']
}
df = pd.DataFrame(data)

# 指定需要处理的水果列
fruit_columns = ['Fruit1', 'Fruit2', 'Fruit3']

# 过滤并替换:保留含P/G的项,其余转为NaN
df[fruit_columns] = df[fruit_columns].apply(
    lambda col: col.where(col.str.contains('P|G', na=False), pd.NA)
)

print(df)

代码解释

  • str.contains('P|G', na=False):检测字符串是否包含P或G,na=False确保原始NaN值不被误处理
  • col.where(condition, pd.NA):满足匹配条件时保留原数值,否则替换为NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:10:25