python - 如何用我自己的方法和函数扩展 pandas 的 Dataframe 类

标签 python pandas class inheritance dataframe

第一个问题:

我正在使用 pandas 的 DataFrame,并且经常运行相同的例程作为数据预处理和其他操作的一部分。我想将其中一些例程编写为名为 ExtendedDataframe 的类中的方法,该类扩展了 pandas.DataFrame。我不知道该怎么办。到目前为止,我没有在新类中编写任何 __init__ ,因此它是从 pandas.DataFrame 继承的:

import pandas
class ExtendedDataframe(pandas.DataFrame):
  def some_method(self):
    blahblah

这显然使我能够通过继承创建 ExtendedDataframe 的实例。但我通常通过诸如 pandas.read_csv 之类的方式加载数据,它会返回经典的 DataFrame。除了标准 DataFrame 提供的方法之外,如何才能加载此类 csv 数据并在某个时候将其转换为 ExtendedDataframe 以使用我自己的方法?如果加载阶段返回一个标准的 DataFrame,然后我将其转换为一个 ExtendedDataframe,那就没问题了。

第二个问题:

并非我使用的所有 pandas 功能都是 DataFrame 方法。有些是以 DataFrames 作为参数的函数,例如 pandas.merge。如何将此类函数的使用扩展到我的 ExtendedDataframe 类的实例?换句话说,如果 df1 和 df2 是 ExtendedDataframe 的两个实例,我该如何制作

pandas.merge([df1, df2], ...)

就像使用 DataFrame 的标准实例一样工作吗?

最佳答案

这并不能直接回答您的问题,但它是您问题的潜在答案。很多人在他们的工作流程中使用管道方法。

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pipe.html

而不是说

df = foo(df)

你可以说

df = df.pipe(foo)

您甚至可以为函数指定参数!这比尝试封装整个数据帧类更容易维护。所以我们的想法是,您可以创建一个函数库并根据需要对它们进行管道传输。

关于python - 如何用我自己的方法和函数扩展 pandas 的 Dataframe 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47917888/

相关文章:

python - 是否有 `itemgetter` 等效于 `numpy.ndarray` ?

python - 在数据帧 : as rows and columns 中连接列表的两种方法

python - groupby 上的复杂/多列操作

typescript - 有没有办法阻止子类覆盖 typescript 中的方法?

javascript - 设计模式 - 编写 API 包装器库( typescript )

python - 如何在 aws lambda 中添加 mecab 库

python - scikit-learn 查询数据维度必须匹配训练数据维度

python - 获取 pandas 数据框中出现特定值的第一个月和最后一个月

python - 为什么不将工作替换为以元组为键的字典?

c++ - 在 vector 中存储两个不同的类对象