如何将pandas DataFrame嵌套列表元素按对应字典键值替换
Pandas实现嵌套列表按行字典映射替换
直接使用apply逐行处理即可,以下是完整可运行代码:
- 首先构造测试用DataFrame:
import pandas as pd df_smth = pd.DataFrame({ 'Dict_Col': [{1:'a', 2:'b', 3:'c'}, {1:'a', 2:'b', 3:'c'}], 'Perm_Col': [[[1, 2], [1, 3], [2, 3]], [[1, 1], [2, 3], [1, 3]]] })
- 执行映射转换生成新列:
df_smth['New_Perm_Col'] = df_smth.apply( lambda row: [[row['Dict_Col'][key] for key in sub_list] for sub_list in row['Perm_Col']], axis=1 )
运行后New_Perm_Col就会得到你需要的结果。
注意事项
如果Perm_Col中存在Dict_Col没有的键,可以将取值逻辑改为row['Dict_Col'].get(key, 默认值),避免抛出KeyError异常,示例:
# 键不存在时用空字符串填充 df_smth['New_Perm_Col'] = df_smth.apply( lambda row: [[row['Dict_Col'].get(key, '') for key in sub_list] for sub_list in row['Perm_Col']], axis=1 )
内容的提问来源于stack exchange,提问作者Isaac A
相关产品推荐
相关产品推荐

