Я не знаю, как вы выполняете 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)