gpt4 book ai didi

python - 如果存在特定单词,则将行值替换为 NaN - Python

转载 作者:行者123 更新时间:2023-11-30 22:58:33 24 4
gpt4 key购买 nike

我正在清理数据帧,我想检查数据帧中的单词列表中是否有任何值。如果存在,则该值应替换为 NA 值。例如,

我的数据框就像。

p['title']

1 Forest
2 [VIDEO_TITLE]
3 [VIDEO_TITLE]
4 [VIDEO_TITLE]
5 [${title}url=${videourl}]


p.dtypes
title object
dtype: object

c= ('${title}', '[VIDEO_TITLE]')

由于第 2、3、4、5 行有 c 中的单词,我希望将其替换为 NA 值。

我正在尝试以下操作,

p['title'].replace('|'.join(c),np.NAN,regex=True).fillna('NA')

这个运行没有错误,但我得到的输入与输出相同。根本没有任何变化。

我的下一次尝试是,

p['title'].apply(lambda x: 'NA' if any(s in x for s in c) else x)

抛出错误,

TypeError: argument of type 'float' is not iterable

我正在尝试其他几件事,但没有取得太大成功。我不确定我犯了什么错误。

我理想的输出是,

p['title']

1 Forest
2 NA
3 NA
4 NA
5 NA

谁能帮我解决这个问题吗?

最佳答案

您可以loc将它们设置为'NA'。由于您的值有时位于列表内,因此首先需要从列表中提取它们。第二行从列表中提取第一个字符串(如果它在列表中)。第三行检查是否匹配。

c = ('${title}', 'VIDEO_TITLE')
string_check = p['title'].map(lambda x: x if not isinstance(x, list) else x[0])
string_check = string_check.map(lambda s: any(c_str in s for c_str in c))
p.loc[string_check, 'title'] = 'NA'

根据您正在执行的操作,您可能需要考虑将值设置为 numpy.nan 而不是字符串 'NA'。这是 pandas 处理 null 值的常用方式,并且已经围绕此构建了很多功能。

关于python - 如果存在特定单词,则将行值替换为 NaN - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36135845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com