首页 > 解决方案 > 从数据框的列中过滤掉关键字(不区分大小写) - Pandas

问题描述

想要基于现有列中的单词创建新列 新列应为 Lobby、UPS、Electrical 或“空格

Name                                SubUnitName
Lobby Area                          Lobby
Sensor - Bank lobby                 Lobby
Temperature - UPS Room              UPS
Sensor - Electric Room              Electric
Sensor - electrical Room            Electric
Temperature - electric Room         Electric
Sensor

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

标签: pythonpandasnumpydataframe

解决方案


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

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)

将 None 替换为最后一行的空格

df["SubUnitName"].fillna('', inplace=True)

推荐阅读