我用键和值创建了字典,并想在一个循环中编写一个循环:
for key,val in dict.items():
def contains(x, y):
result = np.nan
for i in x:
if i.lower() in y.lower():
result = key
return result
df['Test'] = df['Countrylist'].apply(lambda x: contains([val], x))
因此,我想检查“字典”中的值是否在“国家/地区”列表中,如果是,则为新的“列测试”提供“字典中的键的值”。
但是我的代码不起作用...
预期输出:
Countrylist Bla1 Bla2 Test
Germany 12 12 "Here should be the Key of the Dic"
答案 0 :(得分:1)
每个评论:
def contains(x, y):
for i in x:
if i.lower() in y.lower():
return True
return False
for key,val in dict.items():
df['Test'] = df['Countrylist'].apply(lambda x: key if contains([val], x) else np.nan)
同样,由于您没有提供输入/输出对,因此很难检查它是否满足您的要求。特别是contains(['foo', 'bar'], 'FOOTBALL') == True
(可能是您想要的,但从函数名称中看不出来)。
此外,请注意,此代码在循环中多次重新分配df['Test']
。该列的最终值取决于哪个循环迭代是最后一个循环迭代(对于Python版本<= 3.5-3.6,see the accepted answer here,您不能依赖此循环迭代。)