猿问

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

我有一个大型数据框,其中包含超过 32 个字符的许多变量名。由于我想将 df 导出到每个变量名限制为 32 个字符的 STATA,我需要修改 df 中的变量名以及包含相同变量名及其标签的关联字典。我需要后者的帮助。

由于我有许多以相同名称开头的变量,我想通过 for 循环修改它们。

考虑以下变量名称:

  • variable_name_is_too_long_1

  • variable_name_is_too_long_50

期望的输出:

  • variable_is_too_long_1

  • variable_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 没有任何反应(没有给出错误),我无法解释它,因为输入看起来是正确的。欢迎任何其他更有效的方式!谢谢你的帮助!


PIPIONE
浏览 77回答 2
2回答

30秒到达战场

尝试以下方法: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)

长风秋雁

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()}
随时随地看视频慕课网APP

相关分类

Python
我要回答