python - 如何向Python中现有的类添加方法?

标签 python pandas class object methods

我有一个非常方便的高级 pd.DataFrame 保存功能,我想将其添加到 pandas 中。如何将此方法添加到 pd.DataFrame 类中?

def to_file(df, path, sep="\t", compression="infer", pickled="infer", verbose=False, **args):
    _ , ext = os.path.splitext(path)
    # Serialization
    if pickled == "infer":
        if ext in {".pkl", ".pgz", ".pbz2"}:
            pickled = True
        else:
            pickled = False
    # Compression
    if compression == "infer":
        if pickled:
            if ext == ".pkl":
                compression = None
            if ext == ".pgz":
                compression = "gzip"
            if ext == ".pbz2":
                compression = "bz2"
        else:
            compression = None
            if path.endswith(".gz"):
                compression = "gzip"
            if path.endswith(".bz2"):
                compression = "bz2"
    if verbose:
        print(
            f"path:\t{path}", 
            f"sep:\t{repr(sep)}",
            f"compression:\t{compression}",
            f"pickled:\t{pickled}", 
            sep="\n", 
            file=sys.stderr,
        )
    if pickled == False:
        df.to_csv(path, sep=sep, compression=compression, **args)
    if pickled == True:
        df.to_pickle(path, compression=compression, **args)

最佳答案

使用Python类继承。这将允许您使用 Pandas 数据框中的所有方法,并且仍然定义您自己的方法。

import pandas as pd

class NewDF(pd.DataFrame)
    def __init__(self, *args):
        pd.DataFrame.__init__(self, *args)

    def to_file(df, path, sep="\t", compression="infer", pickled="infer", verbose=False, **args):
        ...

关于python - 如何向Python中现有的类添加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49139164/

相关文章:

Jquery 删除类不工作

python - 对字节进行按位运算

python - 选择列具有最小值的 Pandas 数据框行

python - 加入并计算每个子类别中的值数量

pandas - Pandas 和列表中的瑞典字符

c++ - 具有2个模板参数的C++类,具有1个参数的函数

java - Switch 语句和字符串到字节

python - 将秒列转换为 hh :mm:ss - Pandas

python - Imaplib 中的 EOF 错误

pandas - matplotlib 条形图中的“缺失”条