如何使用Pandas将DataFrame列表列的值按字典映射替换?
解决思路与方案
先分析你两种方法的问题:
- method1:遍历的是
df['Feedback']的每个完整列表,字典中没有列表作为键的映射,所以直接返回原列表,根本没做元素替换。 - method2:逻辑本身是对的,但致命问题是列名拼写不一致——你的DataFrame列名是
Feeback(少了一个d),但代码里写的是Feedback,导致找不到列执行失败。
修正后的可行方案:
方案1:修正列名的method2
直接把代码中的列名和DataFrame保持一致,同时可以去掉多余的list(x)(因为x本身就是列表):
df['Feeback'] = df['Feeback'].apply(lambda x: [feedback_dict.get(item, item) for item in x])
方案2:嵌套列表推导式
直接遍历列中的每个列表,再遍历列表内的元素做替换:
df['Feeback'] = [[feedback_dict.get(item, item) for item in lst] for lst in df['Feeback']]
执行任意一种方案后,就能得到你想要的结果。
内容的提问来源于stack exchange,提问作者Arjun
相关产品推荐
相关产品推荐

