ОРИГИНАЛЬНЫЙ ВОПРОС .

Я пишу цикл while, чтобы зациклить определенные столбцы. В этом цикле while я хочу создать переменную, имя которой частично состоит из имени столбца, по которому он проходит.

x=2
length=len(grouped_class.columns)
while x<length:
    x=x+1
    (grouped_class.columns[x])_largest = x+5
    ...

Это мой текущий код (= x + 5 не фактический код, а пример), но он возвращает синтаксическую ошибку. Если я запускаю 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.

Как я могу это сделать?

2
Robvh 26 Июн 2019 в 14:38

4 ответа

Лучший ответ

Вы не должны создавать переменные на лету , так как это может привести ко многим проблемам, вместо этого используйте словарь:

largest = {}
x = 2
length = len(grouped_class.columns)
while x < length:
    x = x + 1
    column = grouped_class.columns[x]
    largest[column + '_largest'] = x + 5
    ...
1
zipa 26 Июн 2019 в 12:49

Правильный путь. Правильный (Pythonic) способ - использовать словари.

columns = {}
columns[some_string] = some_value

Неопознанный грязный способ, но ответ на ваш вопрос: Сохранение строки в качестве имени переменной в вашем глобальном пространстве имен может быть сделано просто (пример):

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

Выходной то

>>> var_name
100

С другой стороны, если вы хотите добавить имя переменной локально, вы можете использовать locals() вместо globals().

Я надеюсь, что вы можете взять на себя здесь!

1
BlueRine S 26 Июн 2019 в 11:53

Похоже, вы используете панду dataFrame. Ты можешь использовать:

dict = {}
my_dict[grouped_class.columns[x]+'_largest'] = x+5
1
amalik2205 26 Июн 2019 в 12:12

Вы не хотите этого делать. Конечно, грязные трюки могут это позволить, но Pythonic может использовать словарь:

largest = {}
x = 2
length = len(grouped_class.columns)
while x < length:
    x = x + 1
    largest[grouped_class.columns[x]] = x + 5
1
Nordle 26 Июн 2019 в 11:58