ValueError :: Невозможно переиндексировать из-за ошибки дублирующейся оси - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь написать функцию на python. Однако он продолжает возвращать ошибку «не может переиндексировать с дублированной оси». Я не смог выяснить, почему я получаю ошибку.

def get_match_digital(Demo, Imp, imp_cap):
    df102 = []
    # Loop for running a simulation n times
    d1 = df_new
    impcap = imp_cap

    for x in range(1):
        # Randomly selecting n number of random rows which would be no. of impressions in this case

        f2 = d1.sample(Imp)
        # applying frequency capping after sample selection
        d = f2.assign(rn=f2.sort_values(['MemberId'], ascending=False).groupby(['MemberId']).cumcount() + 1).query('rn <= 3')

        a = 20000
        df42 = []
        for y in range(10):
            df = f2.iloc[:a]

            df32 = df.loc[(df['ageGroup25_54'] == Demo)].MemberId.nunique()

            a = a + a

            df42.append(df32)

        df102.append(df42)

    transposed2 = list(zip(*df102))
    avg2 = lambda items: float(sum(items)) / len(items)

    averages2 = list(map(avg2, transposed2))
    columns = ['reach']
    final = pd.DataFrame(columns=columns)
    final = final.assign(reach=averages2)
    final['Imp'] = 20000 * (final.index.values + 1)
    final['reachP'] = round(((final['reach'] / Imp) * 100), 2)
    return final

Строка кода, которая, по моему мнению, выдает ошибку:

d = f2.assign(rn=f2.sort_values(['MemberId'], ascending=False).groupby(['MemberId']).cumcount() + 1).query('rn <= 3')

То, что я пытаюсь сделать здесь, это убедиться, что в случайном выборе выборки не более 3 вхождений одного и того же члена.

Как только мы удалим эту строку кода, функция заработает. Мы попытались исправить это с помощью

d = f2.assign(rn=f2.sort_values(['MemberId'], ascending=False).groupby(level=0)(['MemberId']).cumcount() + 1).query('rn <= 3')

и путем сброса индекса

d.reset_index()

Я надеялся, что кто-то может помочь выяснить, почему я получаю ошибку, и помочь решить проблему.

Заранее большое спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...