首页 > 解决方案 > 来自字符串的变量名

问题描述

这可能吗?

i = 1
for var in ['var1', 'var2', 'var3', 'var4']:
    eval(var) = i
    i + 1

不知何故,我想为每个循环创建一个新变量(使用新名称)。

[编辑:] 很多人说,它没用,所以下面是我想用它的实际代码:

import pandas as pd

# Convert categorical variables to dummies
PPE_WAW_DISTRICT = pd.get_dummies(X['PPE_WAW_DISTRICT'], prefix='PPE_WAW_DISTRICT')
PPE_TARIFF_TYPE = pd.get_dummies(X['PPE_TARIFF_TYPE'], prefix='PPE_TARIFF_TYPE')
PPE_OSD = pd.get_dummies(X['PPE_OSD'], prefix='PPE_OSD')
VariantProdEE = pd.get_dummies(X['VariantProdEE'], prefix='VariantProdEE')
CUS_OWNER = pd.get_dummies(X['CUS_OWNER'], prefix='CUS_OWNER')
CUS_LEGAL_FORM = pd.get_dummies(X['CUS_LEGAL_FORM'], prefix='CUS_LEGAL_FORM')
CUS_CITY = pd.get_dummies(X['CUS_CITY'], prefix='CUS_CITY')
CUS_DISTRICT = pd.get_dummies(X['CUS_DISTRICT'], prefix='CUS_DISTRICT')

X.drop(['PPE_WAW_DISTRICT', 'PPE_TARIFF_TYPE', 'PPE_OSD', 'CUS_OWNER', 
               'CUS_LEGAL_FORM', 'CUS_CITY', 'CUS_DISTRICT'], axis=1, inplace=True)

X = pd.concat([PPE_WAW_DISTRICT, PPE_TARIFF_TYPE, PPE_OSD, VariantProdEE,
              CUS_OWNER, CUS_LEGAL_FORM, CUS_CITY, CUS_DISTRICT], axis=1)

基本上我想从每个选定的 oclumns 创建虚拟列,然后使用前缀将其添加到主数据框(X)

谢谢,马特

标签: pythonpython-3.x

解决方案


你几乎肯定不想这样做,但如果出于某种原因你仍然真的想这样做,你可以这样做

i = 1
for var in ['var1', 'var2', 'var3', 'var4']:
    exec(var + "=" + str(i))
    i += 1

或为了紧凑,

for i, var in enumerate(['var1', 'var2', 'var3', 'var4'], 1):
    exec(var + "=" + str(i))

但正如其他人所说,使用字典!


推荐阅读