【发布时间】:2022-01-04 14:17:31
【问题描述】:
我有一个字典和数据框列,其中包含一系列字符串类型的列表元素。
如果字典 item 中的值与任何应该用 itemname 标记的字符串元素匹配
例如:输入
text_column=[['grapes','are','good','for','health'],['banana','is','not','good','for','health'],
['apple','keeps','the','doctor','away'],['automobile','industry','is','in','top','position','from','recent','times']]
dict={ "fruit_name":['apple','grapes','lemon','cherry'],
"profession":['health','manufacturing','automobiles']
}
输出:
1) fruit_name
2) fruit_name
3) profession
4) profession
【问题讨论】:
-
您在其中的任何特定部分都被卡住了吗?这是一个非常广泛的问题,只是“我如何编写这个复杂的要求”。至于问题,
[grapes,are,good,for,health]包含来自fruit_name和profession的字符串,哪一个获胜?此外,您的text_column有 4 行但是您的输出只有 3?这没有多少是可以理解的。请缩小问题的重点,包括您尝试过的代码,并使代码易于理解。 -
请提供有效的python代码
-
@JNevill 原谅我在写作时忘记提及第 4 行输出。文本列有多个元素列表,如果在 dict 值中找到相同的元素,则应过滤它
-
@JNevill:我尝试使用 lambda 函数,但很少有元素没有被 dict 值映射/匹配/过滤。这是代码 df['text_column'].apply(lambda list: [dicts.get(item) for item in list if item in dicts.items()])
-
df['filter_values']=df['text_column'].apply(lambda list: [dicts.get(item) for item in list if item in dicts.items()])跨度>
标签: python pandas dictionary search lambda