Изменения типа после обработки с помощью функции наследования

#python #pandas #dataframe #inheritance

#python #pandas #фрейм данных #наследование

Вопрос:

Объект типа =DataFrame, обрабатываемый в функции маскирования, возвращается в type=list.

Я пытаюсь использовать наследование для сокращения и упрощения жизни, поскольку существует много похожего кода. Но он возвращается в виде списка, а не фрейма данных. У меня много похожего кода, например:

 df4=df3.drop_duplicates(['TITLE'])
#from df3 find title duplicated items
index2=df3.duplicated(['TITLE'])
#duplicated titles items are dropped into df5
df5=df3[index2].reset_index(drop=True)
#items with same title but different database are dropped
df6=df5.drop_duplicates(['TITLE'])
#from df5 find title duplicated items
index3=df5.duplicated(['TITLE'])
#duplicated titles items from df5 are dropped into df6
df7=df5[index3].reset_index(drop=True)
 

Класс наследования, в котором определена функция:

 class Mask_TITLE:
    def __init__(self,masked):
        self.masked=masked
    def mask(masked):
        return [masked.drop_duplicates(['TITLE'])]
 

Выполнив :

 >>df1=Mask_TITLE.mask(df)
 

df1 возвращается в виде списка.

Как убедиться, что df1 по-прежнему является фреймом данных, изменив функцию, или это просто наследование, а функция невозможна для использования в условиях фрейма данных?

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

1. Я считаю, что это тот факт, что у вас есть [] masked.drop_duplicates(['TITLE']) . Кроме того, вам не хватает a self в mask (если вы не предполагаете, что это будет staticmethod или эквивалент… это не очень понятно).

Ответ №1:

Вы превращаете его в список здесь:

 def mask(masked):
        return [masked.drop_duplicates(['TITLE'])]
 

[ amp; ] вокруг возвращаемого значения делает его списком из одного элемента

Попробуйте это:

 def mask(masked):
        return masked.drop_duplicates(['TITLE'])
 

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

1. A list , а не массив.