为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 3.7 中使用 for 循环重命名字典键

在 Python 3.7 中使用 for 循环重命名字典键

PIPIONE 2022-07-26 16:49:58
我有一个大型数据框,其中包含超过 32 个字符的许多变量名。由于我想将 df 导出到每个变量名限制为 32 个字符的 STATA,我需要修改 df 中的变量名以及包含相同变量名及其标签的关联字典。我需要后者的帮助。由于我有许多以相同名称开头的变量,我想通过 for 循环修改它们。考虑以下变量名称:variable_name_is_too_long_1variable_name_is_too_long_50期望的输出:variable_is_too_long_1variable_is_too_long_50我做了什么:for i in [col for col in df if col.startswith('variable_name_')]:     df.rename(columns={i:i.replace('_name','',1)},inplace=True)     dict_labels[i.replace('_name','',1)] = dict_labels.pop(i)列已正确重命名。但是,字典 dict_labels 没有任何反应(没有给出错误),我无法解释它,因为输入看起来是正确的。欢迎任何其他更有效的方式!谢谢你的帮助!
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

尝试以下方法:

for i in [col for col in df if col.startswith('variable_name_')]:
    df.rename(columns={i:i.replace('_name','',1)},inplace=True)
    aux = i.replace('_name','',1)
    dict_label[aux] = dict_label.pop(i)


查看完整回答
反对 回复 2022-07-26
?
长风秋雁

TA贡献1757条经验 获得超7个赞

rename_labels = {col: col.replace("name_", "") for col in list(df.columns) if col.startswith("variable_name_")}


df.rename(columns = rename_labels, inplace = True)


dict_labels = {v: k for k, v in rename_labels.items()}


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信