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

DataFrame列清洗:含指定关键词却返回np.nan的函数修正

问题修正方案

问题原因

你传入的string是一个列表(比如string_samp是包含单个字符串的列表),但函数里直接执行keyword in string——这是在判断关键词是否是列表的元素,而非判断关键词是否存在于列表内的字符串中,因此条件不成立,返回了np.nan。

修正后的函数

import numpy as np

def find_and_suck_hashtag_vacuum(string, keyword, output):
    # 处理单个字符串的情况
    if isinstance(string, str):
        return output if keyword in string else np.nan
    # 处理列表/可迭代对象(如DataFrame列的批量元素)
    elif hasattr(string, '__iter__') and not isinstance(string, str):
        return [output if keyword in s else np.nan for s in string]
    # 其他无效输入返回nan
    else:
        return np.nan

测试验证

运行你的测试代码:

string_samp = ['Air conditioning,Car park,Interesting wine list,Restaurant offering vegetarian menus,Wheelchair access']
output = find_and_suck_hashtag_vacuum(string_samp, "Air", "AC")
print(output)  # 输出: ['AC']

针对DataFrame列的更优写法

如果是清洗DataFrame的description列,推荐直接用Pandas的矢量化操作,比自定义函数更高效:

import pandas as pd
import numpy as np

# 示例DataFrame
df = pd.DataFrame({
    'description': [
        'Air conditioning,Car park',
        'Wheelchair access',
        'Interesting wine list,Air conditioning'
    ]
})

# 生成新列,匹配到关键词返回"AC",否则返回np.nan
df['ac_tag'] = np.where(df['description'].str.contains("Air"), "AC", np.nan)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:07:36