Python 类派生自 pandas DataFrame,具有 list/DataFrame 属性

标签 python pandas oop

我正在尝试创建一个从 pandas DataFrame 派生的类。该类应分别具有 stringDataFramelist 类型的属性。 string 属性没有问题,但 DataFramelist 都会导致警告。尽管有警告,代码似乎表现正确。

有人可以帮我修复我的代码吗?或者抑制警告?

代码:

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

标准输出:

test
Empty DataFrame
Columns: []
Index: []
(1, 2, 3)

最佳答案

您正在尝试对数据框进行子类化。

我已经在这里回答了如何子类化 -> LINK

<小时/>

为什么一个数据帧的属性是另一个数据帧?如果您想要一个具有多个属性的对象,其中之一是数据框,那没问题。只是不要将类定义为 class MyClass(pd.DataFrame): 而是 class MyClass(object):

关于Python 类派生自 pandas DataFrame,具有 list/DataFrame 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52119080/

相关文章:

python - 我应该使用哪种方法来访问文件,为什么?

python - 如何将列表分配给 Pandas Data Frame 的现有列?

python - 比较数据框中的列并将其放入另一个数据框中

java - 重构部分类和循环依赖

php - 如何在 php-class 中使用 traits?

python - Matplotlib 等高线图不提取精确等高线

Python 正则表达式匹配字符串的最后一个单词

java - 解析Windows事件日志,可能吗?

python pandas时间序列年提取

c# - 如何制作一个公共(public)子类来删除重复代码