Я бы хотел взять сгруппированный фрейм данных и создать отдельные фреймы данных для каждой соответствующей группы.
Я использую понимание списка, чтобы разрезать фрейм данных pandas, используя значения в списке names_list
и затем присвоение результата переменным с тем же именем.Однако значения в names_list
не всегда появляются в моем кадре данных, и то, какое из них не будет в кадре данных, является совершенно случайным.Как я могу заставить эту работу работать и возвращать только те переменные, которые действительно появляются?
Что я пробовал:
idx = pd.IndexSlice
names_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
a, b, c, d, e, f, g, h = [df.loc[idx[x,:],:] for x in names_list]
Вышеприведенное возвращает KeyError всякий раз, когда значение отсутствует в кадре данных.
Также пробовал:
def split_df(data):
try:
a = [df.loc[idx[x,:],:] for x in data]
except KeyError:
a = None
return a
names_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
a, b, c, d, e, f, g, h = [x for x in names_list]
name_vars = [a, b, c, d, e, f, g, h]
name_vars_2 = []
for var, val in zip(name_vars,names_list):
var = split_df(val)
if var is None:
continue
else:
name_vars_2.append(var)
Этот подход возвращает только список None для каждого значения.
Мой желаемый результат - список переменных с соответствующим срезомФрейм данных присваивается каждой переменной.