如何在列中搜索多个字符串并更新单元格值?

Posted

技术标签:

【中文标题】如何在列中搜索多个字符串并更新单元格值?【英文标题】:How to search multiple string in column and update cell vales? 【发布时间】:2021-12-25 10:15:50 【问题描述】:

我一直在尝试根据另一个包含字符串的列值来更新数据框中的列值。

import pandas as pd
import numpy as np

1.   df=pd.read_excel('C:\\Users\\bahlrajesh23\\datascience\\Invoice.xlsx')
2.   df1 =( df[df['Vendor'].str.contains('holding')] )
3.   df['cat'] = pd.np.where(df['Vendor'].str.contains('holding'),"Yes",'' )
4.   print(df[0:5])

上面第 4 行的代码运行良好,但现在我想在第 3 行添加更多条件,我像这样修改了上面的第 3 行。

df['cat'] = pd.np.where((df['Vendor'].str.contains('holding'),"Yes",''),
                        (df['Vendor'].str.contains('tech'),"tech",''))

我收到以下错误

ValueError: either both or neither of x and y should be given

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

因为您希望针对每个条件返回不同的答案,所以使用 np.where() 将不起作用。 map() 也很难。

您可以使用apply() 并根据需要使函数变得复杂。

df = pd.DataFrame('Vendor':['techi', 'tech', 'a', 'hold', 'holding', 'holdingon', 'techno', 'b'])
df

def add_cat(x):
    if 'tech' in x:
        return 'tech'
    if'holding' in x:
        return 'Yes'
    else:
        return ''
        
df['cat'] = df['Vendor'].apply(add_cat)

      Vendor   cat
0      techi  tech
1       tech  tech
2          a
3       hold
4    holding   Yes
5  holdingon   Yes
6     techno  tech
7          b

【讨论】:

我是这样写的 这不起作用,因为当我在我的数据框列中应用此函数时,它会给出错误“TypeError:'float' 类型的参数不可迭代”。这意味着您的解决方案只有在一切都是文本时才有效。 那么请添加您的数据的代表性示例。或者将您的浮动更改为文本。不清楚为什么要在浮动元素中搜索文本。

以上是关于如何在列中搜索多个字符串并更新单元格值?的主要内容,如果未能解决你的问题,请参考以下文章

在列中查找值,填充'直到非空白单元格

如果在列中找到重复的单元格值,则返回值

T-SQL:如何使单元格值唯一?

Extjs 4网格鼠标悬停显示完整的单元格值

匹配两列中的单元格值,如果匹配,则将另一个值复制到空白单元格

在列中找到下一个空单元格时避免合并单元格