Преобразование именованного агрегата до pandas/python3

#python #pandas

#python #pandas

Вопрос:

Для приведенного ниже:

 summary_df = (df
    .groupby(['provider', 'master_id'])
    .agg(
        content_type_id             =('content_type_id', 'first'),
        title                       =('title', 'first'),
        release_year                =('release_year', 'first'), ...
        subs                        =('burned_in_sub_language', lambda x: str(sorted(i.lower() for i in x.dropna().unique())))
      )
    .reset_index()
)
  

Каким был бы правильный способ сделать это до введения именованных агрегатов, включая псевдоним столбцов?

Комментарии:

1. Вы можете передать как dict agg({"content_type_id":"first", "title:"first"...}

2. @HenryYik хорошо, но как тогда вы делаете переименования? Или вам нужен отдельный / цепной метод для выполнения этой части? Например, посмотрите, как burned_in_sub_language происходит sub ?

Ответ №1:

Как упоминал Генри Йик, используйте .agg(), за которым следует .rename() .
Например:

 summary_df = (df
    .groupby(['provider', 'master_id'])
    .agg({'content_type_id':'first', 'title': 'first',})
    .rename(columns={
        'content_type_id': 'something else', 
        'title': 'changed_name',})
)
  

Комментарии:

1. Я вижу — так является ли «новый» способ просто кратким способом объединения этих двух методов?

2. @samuelbrody1249 да, я сам очень доволен этим, для меня это просто экономит дополнительный ввод текста, поэтому я использую новый способ, если мне нужно переименовать столбцы, что происходит большую часть времени