Необязательные аргументы строк и фрейма данных для функции Python - PullRequest
1 голос
/ 26 сентября 2019

У меня есть функция для выполнения нескольких задач.И мне нужно передать необязательные строки / переменные и необязательный фрейм данных с другими значениями.Например, это моя функция.

def main(df,option=None,type=None, *args)
    if type == "cars":
       #multiple functions..
       df      = function1(df)
       results = function2(df)
       if option =="ex":
          results = function4(results)
       elif option =="CDS":
           result  = function5(results)
    elif type == "buses":
         df2 = pd_read_csv("data2",sep="\t",header=0) # This is the optional data frame I wannna pass
         def func3(df2,results,df):
             result["col3"] =pd.merge(df2,df, on="col1")
             return result
         if option =="ex":
            results = function4(results)
         elif option =="CDS":
            result  = function5(results)
     return(result)

У меня есть две необязательные переменные, переданные в мою функцию main уже option и type.Теперь мне нужно передать еще одну необязательную переменную df2.Но я не знаю, как это сделать.Приведенный выше пример является шаблоном из моей основной функции.Здесь я хочу добавить df2 к main() и использовать его в первом цикле elif для buses.

Любые предложения или помощь высоко ценится

Ответы [ 2 ]

2 голосов
/ 26 сентября 2019

Вы можете использовать аргумент * args в основной функции для передачи необязательных параметров, таких как df2, таких как:

def main(df,option=None,type=None, *args):
    df2=args[0]    # here you will get the df2

# call main function as
main(df,option,type,df2)

ИЛИ

Вы также можете использовать kwargs для передачи необязательных аргументов ключевого слова в виде

def main(df,option=None,type=None, **kwargs):
    df2=kwargs['df2']   # here you will get the df2

# call main function as
main(df,option,type,df2=df2)

Надеюсь, это поможет!

1 голос
/ 26 сентября 2019

Похоже, вам нужно.

def main(df,option=None,type=None,df2=None, *args):
    if df2 is not None:
        #Process df2 ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...