Оберните функцию панд вокруг моей собственной созданной функции - PullRequest
2 голосов
/ 19 июня 2019

У меня есть класс Tweetanalyzer, в качестве экземпляра которого используется массив данных.

Теперь я хочу создать функцию 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.

Спасибо !!!

1 Ответ

2 голосов
/ 19 июня 2019

Да, использование * 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)

Более подробное объяснение см .: Что ** (двойная звезда / звездочка) и * (звездочка / звездочка) делают для параметров?

...