如何为多个传入数据设置单个列名

2024-04-27 00:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我接收交易组合列表中所列股票数据的逐点数据的代码。 我正在从zerodha api平台接收刻度数据

import pandas as pd
from kiteconnect import KiteTicker
import kiteconnect
import datetime
import logging

pd.options.display.max_columns = 100
pd.options.display.width = 1500
pd.options.display.max_rows = 100

logging.basicConfig(level=logging.DEBUG)

api_key = ""
access_token = ""

kws = ""
kite = ""

# Initialise
kws = KiteTicker(api_key, access_token)

trade_portfolio = [3050241,969473, 784129, 2889473,897537,3465729,2953217]

data_list1 = []

def on_ticks(ws,ticks):
    for alldata in ticks:
        data_list1 = alldata['instrument_token'],alldata['timestamp'],alldata['ohlc']['high'],alldata['ohlc']['low'],alldata['ohlc']['close'],alldata['ohlc']['open'],alldata['last_price'],alldata['volume']
        df = pd.DataFrame(data_list1, index=['token number','timestamp','high','low','close','open','lastprice','volume'])
        df = df.transpose()
        print(df)

subscribe = trade_portfolio

def on_connect(ws, response):
    ws.subscribe(subscribe)
    ws.set_mode(ws.MODE_FULL, subscribe)

kws.on_ticks = on_ticks
kws.on_connect = on_connect
kws.connect()

上述代码的输出为: enter image description here

现在我的问题是:

  1. 我需要在我的输出中有一个单独的列名,即tokennumber、timestamp、high、low、close、open、volume应该是列名,但我收到的不同股票的所有tick数据都应该低于第1行、第2行等等,为了更清楚地描述我需要这种格式的o/p:请忽略下表中的列名和数据

  2. 由于我正在以逐勾格式接收数据,即每秒钟接收一次新数据,因此如何根据令牌编号更新数据,并且在同一行中不为更新的数据创建其他行。例如,在下面的excel表格中,应更新wipro行中的库存wipro数据,仅当循环通过令牌时,不创建任何新行,所有其他库存也应如此。我知道它可以通过索引切片来完成(我想是的),但我不能这样做,所以你能帮我解决这个问题吗

enter image description here


Tags: 数据importtokenapidfwsonlogging