首页 > 解决方案 > 如何选择列名并将其用作 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.

我怎样才能做到这一点?

标签: python

解决方案


正确的方法: 正确的(Pythonic)方法是使用字典。

columns = {}
columns[some_string] = some_value

不建议的肮脏方式,但回答了您的问题:将字符串作为变量名存储在全局命名空间中可以通过(示例)简单地完成:

some_value = 100
some_string = 'var_name'
globals()[some_string] = some_value

那么输出是

>>> var_name
100

另一方面,如果要在本地添加变量名,可以使用locals()代替globals().

我相信你可以从这里接管!


推荐阅读