Я создаю словарь, собирая данные из тиков, затем добавляю словарь в новый фрейм данных с 3 columns
, как и в словаре.Проблема в том, что словарь добавляется в фрейм данных, но в каждом столбце фрейма данных есть копия добавленных словарей в виде одного фрейма данных.Извините, если я не смог четко объяснить проблему.Я очень новичок в разработке, и любая поддержка будет высоко ценится.Является ли bcoz of pycharm способом отображения результата?
Кроме того, кто-то может сказать мне, как рассчитывать время в секундах вместо чисел и как сделать повторную выборку в добавленном кадре данных в течение 1 минуты на LTPстолбец.
ниже мой код:
df_cols = ["Token", "LTP", "Volume"]
data_frame = pd.DataFrame(data=[], columns=df_cols, index=[])
def on_ticks(ws, ticks): # retrive continius ticks in JSON format
global data_frame, df_cols
data = dict()
for tick in ticks:
token = tick["instrument_token"]
ltp = tick["last_price"]
volume = tick["volume"]
timestamp = str(datetime.datetime.now().time())
data[timestamp] = [token, ltp, volume]
print(data)
tick_df = pd.DataFrame(data.values(), columns=df_cols, index=data.keys())
data_frame = data_frame.append(tick_df)
print(data_frame.tail())
Ожидаемый результат
for -> print(data) = {'15:27:39.544348': [779521, 290.9, 11236092]}
для -> print (data_frame.tail ()) =
Token LTP Volume
15:27:39.544348 779521 290.9 11236092
15:27:40.144447 779521 290.95 11236092
Фактический результат для -> печати (данные) = {'15:27:39.544348': [779521, 290.9, 11236092]}
для -> печати (data_frame.tail ()) =
Token LTP \
15:27:39.544348 ([779521, 290.9, 11236092]) ([779521, 290.9, 11236092])
15:27:40.144447 ([779521, 290.95, 11236092]) ([779521, 290.95, 11236092])
Volume
15:27:39.544348 ([779521, 290.9, 11236092])
15:27:40.144447 ([779521, 290.95, 11236092])