python - 使用“.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: 无效的语法
我知道这种特殊方法适用于字符串,但有没有办法“自动化”变量的命名?
提前致谢。
解决方案
您不能“动态地”命名变量,也没有必要这样做。只需返回字典:
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 中创建具有动态名称的变量或更一般的对象,但这很少有用。)
推荐阅读
- angular - ngbPopover 不会关闭,会在加载时打开
- java - 如何在 khttp 中发送原始 byteArray 作为 post 请求的正文?
- mysql - 将 Django 连接到 MySQL 错误“您安装了 mysqlclient 吗?”
- python - caffe2 no gpu support 错误:libprotobuf.so.14 [进行中]
- git - 导入标签时,GIT 再次下载完整的提交历史
- windows - procmon 中持续时间和相对持续时间之间的差异
- couchdb - Couch DB Mango 查询以比较来自同一结构的 2 个字段
- listview - 项目仅在列表视图中显示部分文本
- javascript - MongoDB。如何在 node.js 中执行存储的函数?
- typescript - TS1238:作为表达式调用时无法解析类装饰器的签名