如何选择列名并将其用作Python中变量名的输入?

时间:2019-06-26 11:38:47

标签: 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的变量。

我该怎么做?

4 个答案:

答案 0 :(得分:1)

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

columns = {}
columns[some_string] = some_value

不建议使用的肮脏方式,但回答了您的问题:只需将(em> string 作为变量名存储在全局命名空间中,只需通过(示例):

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

然后输出

>>> var_name
100

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

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

答案 1 :(得分:1)

您不应该即时创建变量 ,因为它可能会导致许多问题,请改用字典:

largest = {}
x = 2
length = len(grouped_class.columns)
while x < length:
    x = x + 1
    column = grouped_class.columns[x]
    largest[column + '_largest'] = x + 5
    ...

答案 2 :(得分:1)

您不想这样做。当然,肮脏的把戏可以允许它,但是 Pythonic 的方式是使用字典:

{{1}}

答案 3 :(得分:1)

好像您正在使用pandas dataFrame。您可以使用:

dict = {}
my_dict[grouped_class.columns[x]+'_largest'] = x+5