Понимание списка, требующее значений из отдельных списков для ввода функции с несколькими возвращаемыми значениями - PullRequest
0 голосов
/ 30 января 2020

У меня есть два списка. Один из списков содержит множество pandas.core.frame.DataFrame объектов с именем X_train_frames, а другой содержит множество pandas.core.series.Series объектов с именем y_train_frames.

Каждое значение в X_train_frames отображается на метку в y_train_frames I Я хотел бы использовать их в функции вместе и вернуть список.

Я пытался:

from imblearn.over_sampling import SMOTE
smote = SMOTE(random_state = 1, sampling_strategy = 'minority')
X_bal_frames, y_bal_frames = [smote.fit_resample(X_frame, y_frame) for X_frame, y_frame in zip(X_train_frames, y_train_frames)]

Я получаю следующую ошибку:

ValueError: too many values to unpack (expected 2)

Я ожидаю чтобы вернуть два списка SMOTE-данных с измененной выборкой в ​​этом случае: X_bal_frames будет иметь список pandas.core.frame.DataFrame с, а y_bal_frames будет иметь список pandas.core.series.Series

1 Ответ

0 голосов
/ 30 января 2020

Учитывая, что zip(*x) вернет два кортежа из 2D-списка, каждая часть кортежа может быть сохранена с использованием приведенного ниже синтаксиса.

a, b = zip(*x)

Для случая этого примера.

from imblearn.over_sampling import SMOTE
smote = SMOTE(random_state = 1, sampling_strategy = 'minority')

X_bal_frames, y_bal_frames = zip(*[smote.fit_resample(X_frame, y_frame) for X_frame, y_frame in zip(X_train_frames, y_train_frames)])
...