在我自己创建的函数周围包装一个 pandas 函数

Wrap a pandas function around my own created function

我有一个 Tweetanalyzer class,有一个数据帧作为实例变量。

现在我想创建一个 write_to_csv 函数,它可以接受 pandas to_csv 函数的所有参数。

我这样做的原因是我不想调用 -> Tweetanalyzer.df.to_csv 只是 Tweetanalyzerobject.write_to_csv 但具有与 to_csv.

相同的功能

我想包装函数可能是包括 *args 和 **kwargs 的正确方法,但我没有让它工作。

class TweetAnalyzer:

    def __init__(self, tweets, df = pd.DataFrame({'A' : []})):

        self.tweets = tweets
        if df.empty:
            self.df = self.tweets_to_dataframe(self.tweets)
        else:
            self.df = df

    def write_to_csv(self):

        self.df.to_csv()

因此,如果我调用 object.write_to_csv(encoding = "utf-8"),它将被解析为 to_csv 代码并且该代码无需在我的 "encoding" 中指定即可运行函数 write_to_csv.

谢谢!!!

是的,使用 *args 和 **kwargs 可能是正确的想法!像这样:

class TweetAnalyzer:
    def __init__(self, tweets, df=pd.DataFrame({"A": []})):
        self.tweets = tweets
        if df.empty:
            self.df = self.tweets_to_dataframe(self.tweets)
        else:
            self.df = df

    def write_to_csv(self, *args, **kwargs):
        self.df.to_csv(*args, **kwargs)

如需更全面的解释,请参阅:What does ** (double star/asterisk) and * (star/asterisk) do for parameters?