python - 如何选择列名并将其用作 Python 中变量名的输入?
问题描述
原始问题:
我正在编写一个while循环来循环某些列。在这个 while 循环中,我想创建一个变量,其名称部分由它循环的列名组成。
x=2
length=len(grouped_class.columns)
while x<length:
x=x+1
(grouped_class.columns[x])_largest = x+5
...
这是我当前的代码(=x+5 不是实际代码,但作为示例),但它返回语法错误。如果我在 shell 中运行 grouped_class.columns[x],它会返回该列的名称,例如:“ColumnA”。我想使用这个“ColumnA”作为变量名的第一部分。
所以在变量列表中它会返回:ColumnA_largest
通过这种方式,我可以将每一列的结果存储在一个单独的变量中。
我怎样才能做到这一点?
编辑:问题一般化
如何使用通过获取的字符串df.column[x]
作为变量名的输入?
示例 df:
ColumnA ColumnB ColumnC
5 6 4
6 10 2
如果我运行df.columns[1]
它会返回"ColumnB"
我想"ColumnB"
在分配变量时将其用作名称的一部分。
想象一下,我想创建一个变量COLNAME_sum = x + 5
,我想将 COLNAME 更改为我从df.columns[1]
(="ColumnB")获得的字符串
预期输出:一个名为ColumnB_sum
.
我怎样才能做到这一点?
解决方案
正确的方法: 正确的(Pythonic)方法是使用字典。
columns = {}
columns[some_string] = some_value
不建议的肮脏方式,但回答了您的问题:将字符串作为变量名存储在全局命名空间中可以通过(示例)简单地完成:
some_value = 100
some_string = 'var_name'
globals()[some_string] = some_value
那么输出是
>>> var_name
100
另一方面,如果要在本地添加变量名,可以使用locals()
代替globals()
.
我相信你可以从这里接管!
推荐阅读
- java - Oracle 新的 Java 许可证,旧版本有何影响?
- kubernetes - tcp 连接从节点外工作,而 readinessProbe 失败
- node.js - Mongoose 唯一电子邮件地址验证
- hyperledger-fabric - 收到此错误 1.4.3 平台特定的结构二进制文件在下载超级账本结构样本时无法下载
- r - 比较两个字符串并查找差异并显示它们以便在 R 中轻松查看(类似于 git diff)?
- coq - 如何用索引定义列表
- reactjs - 减速器从哪里获得状态?
- ios - iOS SDK 中的 Mapbox 导航、重新路由问题
- angular6 - 如何在 ngx bootstrap tabset 中上一个活动选项卡
- android - Android WebView 视频全屏模式不起作用