Python 从数据帧的列中筛选出关键字(不区分大小写)-不区分大小写

Python 从数据帧的列中筛选出关键字(不区分大小写)-不区分大小写,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,要基于现有列中的单词创建新列吗 新栏应为大厅、UPS、电气或“空白区” 如上所述,搜索应不区分大小写,如果找到“Electric”或“Electric”,则结果应为“Electric”我为您提供了一个解决方案。它检查字符串之间是否匹配,如果找到,则将其添加到将成为新列的列表中 import pandas as pd d = { "Name" : ["Sensor - Bank lobby ", "Sensor - Bank Lobby &q

要基于现有列中的单词创建新列吗 新栏应为大厅、UPS、电气或“空白区”


如上所述,搜索应不区分大小写,如果找到“Electric”或“Electric”,则结果应为“Electric”

我为您提供了一个解决方案。它检查字符串之间是否匹配,如果找到,则将其添加到将成为新列的列表中

import pandas as pd 


d = { "Name" : ["Sensor - Bank lobby ", "Sensor - Bank Lobby ", "Temperature - UPS Room", "Sensor - Electric Room ", "Sensor - electrical Room", "Sensor"]}


df = pd.DataFrame(data=d)

list_sub_units = []

list_matches = ["Lobby", "UPS", "Electric"]

for entry in df["Name"]:
    matched = False

    for match in list_matches:
        if entry.lower().find(match.lower()) > 0:
            list_sub_units.append(match)
            matched = True
        
    if not matched:
        list_sub_units.append("")

df["SubUnitName"] = list_sub_units


print(df)

在“Name”列中建立要查找的单词列表,然后应用函数“find_match”创建新的“Name”列

将“无”替换为最后一行的空白

df["SubUnitName"].fillna('', inplace=True)
search_list = ["Lobby", "UPS", "Electric"]


def find_match(name_str: str) -> str:
    for item in search_list:
        item_lc = item.lower()
        if item_lc in name_str.lower():
            return item


df.loc[:, "SubUnitName"] = df["Name"].apply(find_match)
df["SubUnitName"].fillna('', inplace=True)