FAQ > 金融建模 > 第三方交互 > Python

Q:pyTSL接口中如何传递DataFrame类型数据执行    

  • A:提供以下两种方式的范例:
    方式一:pyTSL提供方法DataFrameToTSArray,可以把dataframe转成TS array风格的数据结构。
    方式二:天软和python都能支持json串,在交互过程中,可以通过json串作为数据转换的桥梁,解决编码不一致及数据类型不匹配等的问题。
    交互接口:FAQ:天软pyTSL接口
    使用案例:
    范例01:DataFrameToTSArray把DataFrame类型数据转为TS array
    Python代码:获取指定代码列表行情信息

    import pandas as pd
    import pyTSL
    stk=pd.DataFrame({"stock":["SZ000001","SZ000002","SZ000016"],"date":["2022-04-01","2022-04-01","2022-04-01"]})
    # DataFrame转为TS array
    stk=pyTSL.DataFrameToTSArray(stk)

    # 交互
    c = pyTSL.Client("user", "password", "tsl.tinysoft.com.cn", 443) #user为天软账号,password 为账号密码
    c.login()
    test = '''
    function get_data(data);
    begin
      t:=select *,
          specall(array(close(),vol(),StockZf3()),array(pn_stock():["stock"],pn_date():StrToDate(["date"]))) as "info"
       from data end;
      t[:,array("close","vol","soockzf")]:=t[:,"info"];
      deletefield(t,"info");
      return t;
    end;
    '''
    r = c.call('get_data',stk,code=test).value()
    # 可直接返回DataFrame类型数据
    print(pd.DataFrame(r))


    返回结果:

    范例02:把DataFrame格式数据转为json串
    Python代码:获取指定代码列表行情信息

    import pandas as pd
    import pyTSL
    stk=pd.DataFrame({"stock":["SZ000001","SZ000002","SZ000016"],"date":["2022-04-01","2022-04-01","2022-04-01"]})
    # dataframe转json串传参
    stk=stk.to_json(orient='records')

    # 交互
    c = pyTSL.Client("user", "password", "tsl.tinysoft.com.cn", 443) #user为天软账号,password 为账号密码
    c.login()
    test = '''
    function get_data(stk);
    begin
      //json串转天软数据类型
      data:=importjsonstring(stk);

      t:=select *,
          specall(array(close(),vol(),StockZf3()),array(pn_stock():["stock"],pn_date():StrToDate(["date"]))) as "info"
       from data end;
      t[:,array("close","vol","soockzf")]:=t[:,"info"];
      deletefield(t,"info");
      return t;
    end;
    '''
    r = c.call('get_data',stk,code=test).value()
    # 可直接返回DataFrame类型数据
    print(pd.DataFrame(r))


    返回结果: