Я пытаюсь решить данные, как показано ниже, но я не понял, используя groupy и udf, а также обнаружил, что udf не может вернуть dataframe.
Есть ли способ, который мог бы реализовать это с помощью sparkили другой метод может обрабатывать несбалансированные данные
ratio = 3
def balance_classes(grp):
picked = grp.loc[grp.editorsSelection == True]
n = round(picked.shape[0]*ratio)
if n:
try:
not_picked = grp.loc[grp.editorsSelection == False].sample(n)
except: # In case, fewer than n comments with `editorsSelection == False`
not_picked = grp.loc[grp.editorsSelection == False]
balanced_grp = pd.concat([picked, not_picked])
return balanced_grp
else: # If no editor's pick for an article, dicard all comments from that article
return None
comments = comments.groupby('articleID').apply(balance_classes).reset_index(drop=True)