一种方法是首先取消嵌套字典并将值设置为键,并将其对应的键作为值。然后您可以使用列表推导并映射数据框中每个列表中的值。
set为了避免重复值,在每次迭代中从映射返回结果之前需要先进行 a 。另请注意,这与此处or None的操作相同,在列表为空的情况下if x is not None else None将返回None。有关这方面的更详细说明,您可以查看此帖子:
df = pd.DataFrame({'col1':[["Apple", "Banana"], ["Kiwi"], None, ["Apple"], ["Banana", "Kiwi"]]})
d = {1: ["Apple", "Banana"], 2: ["Kiwi"]}
d = {i:k for k, v in d.items() for i in v}
# {'Apple': 1, 'Banana': 1, 'Kiwi': 2}
out = [list(set(d[j] for j in i)) or None for i in df.col1.fillna('')]
# [[1], [2], None, [1], [1, 2]]
pd.DataFrame([out]).T
0
0 [1]
1 [2]
2 None
3 [1]
4 [1, 2]