У меня есть фрейм данных pandas, из которого я хочу построить некоторые матрицы, используя массивы numpy. Эти матрицы будут построены на основе переменных в фрейме данных, и я хотел бы создать их с помощью цикла по списку переменных фрейма данных. Я также хотел бы, чтобы именованные массивы были названы на основе переменной, чтобы я мог легко ссылаться на них.
Ниже приведен код, чтобы попытаться проиллюстрировать мою проблему. Я создаю фрейм данных с двумя категориальными переменными и идентификатором. Затем я создаю список 'vars' с именами переменных, которые я хотел бы зациклить. Я показываю, что мой код работает за пределами цикла (хотя созданный объект - это не панда). Закомментированная часть в конце не работает, но показывает мою попытку включить переменную строку в цикл.
import pandas as pd
import numpy as np
import random
mult_cat = [] # multiple categories
bin_cat = [] # binary categories
id = []
for i in range(0,10):
x = random.randint(0,4)
y = random.randint(0,1)
z = i+1
mult_cat.append(x)
bin_cat.append(y)
id.append(z)
data_2 = {'ID': id,
'mult_cat': mult_cat,
'bin_cat': bin_cat}
df = pd.DataFrame(data_2,
columns = ['ID', 'mult_cat', 'bin_cat'])
vars = ['mult_cat', 'bin_cat']
twice_mult_cat=2*df.mult_cat
print(mult_cat)
print(twice_mult_cat)
"""
for var in vars:
twice_var=2*df.var
print(twice_var)
"""
Полагаю, здесь есть как минимум две проблемы.
1) Я просто умножаю массив панд, поэтому полученный объект не является массивом с нулевыми значениями.
2) Вопрос именования, который, как мне кажется, является здесь более важным.