原始问题:
我正在编写一个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
的变量。
我该怎么做?
答案 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