python - 如何将嵌套字典中的值映射到数据框中的多列或从 3 列数据框映射到主数据框?
问题描述
例如:我有这样的df:
id Status Country Income
1 4 2 3
2 5 3 2
和这样的字典:
d_dict = {Status : { '4':'Married', '5':'UnMarried'},
Country: { '2': 'Japan' , '3': 'China'},
Income: {'3': "5000-10000", 2: "11000-20000"}}
我想根据嵌套字典映射值。我可以为这样的一列做:
for k,v in d_dict.items():
max_d[k] = max(v, key=v.get)
df['Status'] = df['Status'].map(max_d)
但是我有超过 2000 列,我不确定如何处理多个列。
我也尝试过替换但不工作。
df=df.astype(str).replace(d_dict)
解决方案
对我来说,secons 解决方案效果很好 - 嵌套键中只有必要的数字是字符串:
d_dict = {'Status' : { '4':'Married', '5':'UnMarried'},
'Country': { '2': 'Japan' , '3': 'China'},
'Income': {'3': "5000-10000", '2': "11000-20000"}}
df = df.astype(str).replace(d_dict)
print (df)
id Status Country Income
0 1 Married Japan 5000-10000
1 2 UnMarried China 11000-20000
因此,您可以尝试将嵌套键转换为字符串:
d_dict = {'Status' : { '4':'Married', '5':'UnMarried'},
'Country': { '2': 'Japan' , '3': 'China'},
'Income': {3: "5000-10000", 2: "11000-20000"}}
d_dict = {k: {str(k1): v1 for k1, v1 in v.items()} for k,v in d_dict.items()}
df = df.astype(str).replace(d_dict)
print (df)
id Status Country Income
0 1 Married Japan 5000-10000
1 2 UnMarried China 11000-20000
或将所有键转换为整数:
d_dict = {k: {int(k1): v1 for k1, v1 in v.items()} for k,v in d_dict.items()}
df = df.replace(d_dict)
print (df)
id Status Country Income
0 1 Married Japan 5000-10000
1 2 UnMarried China 11000-20000
推荐阅读
- entity-framework - Redis 作为实体框架的二级缓存
- systemd - Systemd - 无法设置以太网接口的速度/双工
- sql - 创建一个 SQL 函数以在检查数据时返回一个位
- swift - SwiftUI:内容有填充
- python - CityEngine PyDev 控制台“控制台已经以值退出:0 等待回答。”
- c# - 面临阿联酋货币代码价格在c#中翻倍的问题
- c# - 来自 C# 应用程序的 UWF 统一写入过滤器访问
- python - 在 Python cx_Oracle 中从 Oracle DB 获取序列号
- javascript - 如何获取 cookie 并为每个循环执行
- wso2 - WSO2 EI 缓存调解器,如何验证控制标头