将熊猫函数包装在我自己创建的函数周围

时间:2019-06-19 17:41:29

标签: python class wrapper

我有一个Tweetanalyzer类,有一个数据框作为实例变量。

现在,我想创建一个write_to_csv函数,该函数可以使用熊猫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代码,并且该代码无需在我的函数write_to_csv中指定“ encoding”即可工作。

谢谢!

1 个答案:

答案 0 :(得分:2)

是的,使用* 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?