как использовать вывод одной функции как ввод другой функции в python - PullRequest
0 голосов
/ 17 июня 2020

У меня есть две функции, код которых, как показано ниже,

, вывод 1-й функции - это имя и ltp. Я хотел бы, чтобы этот вывод был входом второй функции для фрейма данных. пробовал несколько раз, но не смог. Любая помощь приветствуется.

df=pd.DataFrame(data=None)

def on_ticks(ws, ticks):
global df

for sc in ticks:
    token=sc['instrument_token']
    name=trd_portfolio[token]['name']
    ltp=sc['last_price']

def working (name,ltp):
global df
df1=pd.DataFrame([name,ltp]).T
df1.columns=['name','ltp']
df=df.append(df1,ignore_index=True)

1 Ответ

0 голосов
/ 17 июня 2020

Я не знаю, как вы выполняете on_ticks, но я предполагаю, что вы запускаете его одним щелчком мыши, поэтому он должен получить доступ к df с помощью global, но в working я отправляю df в качестве аргумента и получаю он возвращается с return, потому что он более читабельный.

Я не получаю значения из on_ticks, потому что, если он выполняется щелчком мыши, он не может использовать return, чтобы использовать его позже в working, но

Я бегу working внутри on_ticks внутри for -l oop для работы с каждым ltp отдельно.

# --- functions ---

def on_ticks(ws, ticks):
    global df

    for sc in ticks:
        token = sc['instrument_token']
        name = trd_portfolio[token]['name']
        ltp = sc['last_price']
        df = working(df, name, ltp)

def working(df, name, ltp):
    new_df = pd.DataFrame([name, ltp]).T
    new_df.columns = ['name', 'ltp']
    df = df.append(new_df, ignore_index=True)
    return df

# --- main ---

df = pd.DataFrame(data=None)

В конце концов мне пришлось бы получить все ltp в списке и отправить этот список на working и, вероятно, working понадобится еще for -l oop, чтобы поместить его в DataFrame. И код длиннее.

# --- functions ---

def on_ticks(ws, ticks):
    global df

    all_name = []
    all_ltp = []

    for sc in ticks:
        token = sc['instrument_token']
        name = trd_portfolio[token]['name']
        all_name.append(name)
        ltp = sc['last_price']
        all_ltp.append(ltp)

    df = working(df, all_name, all_ltp)

def working(df, all_name, all_ltp):
    for name, ltp in zip(all_name, all_ltp):
        new_df = pd.DataFrame([name, ltp]).T
        new_df.columns = ['name', 'ltp']
        df = df.append(new_df, ignore_index=True)

    return df

# --- main ---

df = pd.DataFrame(data=None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...