Я пытаюсь создать класс, полученный из pandas DataFrame. Класс должен иметь атрибут типа string
, DataFrame
и list
. Нет никакой проблемы с атрибутом string
, но DataFrame
и list
каждого вызывают предупреждение. Несмотря на предупреждения, код, кажется, ведет себя правильно.
Может ли кто-нибудь помочь мне исправить свой код? Или подавить предупреждения?
Код:
import pandas as pd
class MyClass(pd.DataFrame):
def __init__(self, arg_string, arg_dataframe, *arg_params):
pd.DataFrame.__init__(self)
self._string = arg_string
self._dataframe = arg_dataframe
self._params = arg_params
if __name__=='__main__':
df = pd.DataFrame()
c1 = MyClass("test", df, 1, 2, 3)
print(c1._string)
print(c1._dataframe)
print(c1._params)
Предупреждающее сообщение:
so_example.py:7: UserWarning: Pandas doesn't allow columns to be created via a new attribu
te name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access
self._dataframe = arg_dataframe
so_example.py:8: UserWarning: Pandas doesn't allow columns to be created via a new attribu
te name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access
self._params = arg_params
Stdout:
test
Empty DataFrame
Columns: []
Index: []
(1, 2, 3)
Вы пытаетесь подклассифицировать фрейм данных.
Я ответил, как подкласс здесь → LINK
Почему атрибут фрейма данных является еще одним фреймворком данных? Если вы хотите, чтобы объект имел несколько атрибутов, один из которых является фреймворком данных, это прекрасно. Просто не определяйте класс как class MyClass(pd.DataFrame):
но class MyClass(object):
вместо этого.
_metadata
.