首页 > 解决方案 > 使用“.format()”的类似物在 Python 中分配变量

问题描述

我有一个包含几列的数据集,我想将其中的几列从分类数据类型转换为数值数据类型。

我已经定义了以下功能:

def create_num_column(df,column):
    df[str(column)]=df[str(column)].astype('category')
    df[str(column)+'_cat']=df[str(column)].cat.codes

    dictionary{}.format(str(column)+'_cat')=dict(zip(df[column],df[str(column)+'_cat']))
    return dictionary{}.format(str(column)+'_cat')

我还希望这个函数创建一个字典,这样我就能够理解什么标签被分配给什么值。

这里的问题出现在字典的命名上,因为我尝试使用“.format()”并且它显示了语法错误。

字典{}.format(str(column)+'_cat')=dict(zip(df.column,df[str(column)+'_cat']))

>SyntaxError: 无效的语法

我知道这种特殊方法适用于字符串,但有没有办法“自动化”变量的命名?

提前致谢。

标签: python

解决方案


您不能“动态地”命名变量,也没有必要这样做。只需返回字典:

def create_num_column(df,column):
    df[str(column)]=df[str(column)].astype('category')
    df[str(column)+'_cat']=df[str(column)].cat.codes

    return dict(zip(df.column,df[str(column)+'_cat']))

(有一种方法可以在 Python 中创建具有动态名称的变量或更一般的对象,但这很少有用。)


推荐阅读