想要根据现有列中的单词创建一个新列,新列应该是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如上所示,搜索应该是不区分大小写的,如果找到“电气”或“电气”,则结果应该是“电气”
发布于 2020-10-30 13:04:04
建立要在"Name“列中查找的单词列表,然后应用函数"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)发布于 2020-10-30 12:59:26
我为你提供了一个解决方案。它检查字符串之间的匹配,如果找到,则将其添加到将成为您的新列的列表中。
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)https://stackoverflow.com/questions/64608359
复制相似问题