@newPsevdonim
Python разработчик

Почему pandas выдает ошибку?

Pandas выдает ошибку. Количество столбцов которое принимает результат вроде равно количеству возвращаемых значений, все значения это числа (списков или каких то еще раскрываемых вещей нет в возвращаемом результате, проверил сначала принтом просто, а потом дебагером).

Вот код:
def count_metric_using_shift(series: pd.DataFrame) -> pd.Series:
    # тут дополнительные вычисления
    return pd.Series([series["shift"].value_counts().shape[0] <=2,
                      series[series["shift_int"] != 0]["shift_int"].mean(),
                      series[series["shift_int"] != 0]["shift_int"].std(),
                      series[series["shift_normalize_max_shift"] != 0]["shift_normalize_max_shift"].mean(),
                      series[series["shift_normalize_max_shift"] != 0]["shift_normalize_max_shift"].std(),
                      series[series["shift_normalize_session_time"] != 0]["shift_normalize_session_time"].mean(),
                      series[series["shift_normalize_session_time"] != 0]["shift_normalize_session_time"].std(),
                      session_time/series.shape[0],
                      session_time,
                      resample_interval[resample_interval != 0].mean(),
                      resample_interval[resample_interval != 0].std(),
            ])

metrics_df[[
    "same_intervals_between_requests"
    "shift_mean",
    "shift_std",
    "normalized_shift_max_shift_mean",
    "normalized_shift_max_shift_std",
    "normalized_shift_sum_session_time_mean",
    "normalized_shift_sum_session_time_std",
    "sum_session_time",
    "sum_session_time/len_session",
    "mean_divided_1s",
    "std_divided_1s"
]] = df[["time_local", "id_session"]].groupby("id_session").apply(count_metric_using_shift)


Вот сообщение ошибки:
ValueError: Columns must be same length as key
  • Вопрос задан
  • 497 просмотров
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
metrics_df[[
    "same_intervals_between_requests"

пропущена запятая, посмотрите внимательнее. Если же причина не в этом (ошибка то очевидна), может ваше исключение до этого выскакивает, то опубликуйте задачу (что вы хотите сделать.). Возьмите маленький фрейм и во что он должен превратится. По тому что как можно поправлять код? Без задачи (что вы хотите что бы этот код делал).

Потом вот здесь тоже ошибка
df[["time_local", "id_session"]].groupby("id_session").apply(count_metric_using_shift)

вы выбираете сабсет и потом группируете, откуда ему взять колонки на которых запускать вашу функцию (весьма сомнительную).

Вот я на маленьком фрейме сконструировал такую же ошибку, как у вас
вот так будет ошибка потому что колонок где запускать функцию нет
df = pd.DataFrame({
    'Cat':['A','A','B','A','B'],
    'Num1':[1,2,3,4,5],
    'Num2':[6,7,8,9,10]
})
df[['A','B']] = df[['Cat']].groupby('Cat').apply('mean')

да ее можно убрать просто оставив df[['A','B']] =df.groupby('Cat').apply('mean') Но естествеено смысла в этом нет. Оно nan вернет. Нужно все переписывать, по этому и спрашиваю, какая задача.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы