第一个问题:
我正在使用 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/