将三个二维数组按照整合成一个多维数组

最近想要做一个能过查看多个折现的图形,就想到利用echart来实现。通过echarts里面的dataset可以非常方便的实现数据集的图形显示。

但是如何能够给dataset一个合适的数据集成为了最近一直困惑自己的问题,国庆在家想了好久,终于有了一个思路来实现这个数据集的构成。

主要思路如下:

1.传入三个序列的list,按照下列结构[{'datetime':'yyyy-mm-dd','close':number},{'datetime':'yyyy-mm-dd','close':number}]

2.将上述list的datetime提取出来合并成一个大的list(data_time),从而构成一个序列

3.将上述(data_time)以及其他的data,转换为pandas.dataframe,并且设置'datetime'为索引

4.利用concat方法将这些list合并成一个二维表。

5.重新将索引改为列数据

6.将上面的结果转换为json返回。

废话不说,直接上代码。

import pandas as pd
def mergeDataframe(data1,data2,data3):
    datas = []
    data_time = []

    for data in [data1,data2,data3]:
        datas.append(data)
    indexlist = len(datas)
    
    for data in datas:
        for singledata in data:
            data_time.append(singledata['datetime'])
    data_list = sorted(set(data_time))
    df_time = pd.DataFrame(data_list,columns=['datetime'])
    df_time.set_index('datetime',inplace=True)
    
    df1 = pd.DataFrame(data1, columns=['datetime','close'])
    df1.set_index('datetime',inplace=True)
    df2 = pd.DataFrame(data2, columns=['datetime','close'])
    df2.set_index('datetime',inplace=True)
    df3 = pd.DataFrame(data3, columns=['datetime','close'])
    df3.set_index('datetime',inplace=True)
    
    df_all = pd.concat([df_time,df1,df2,df3],axis=1)
    df_all.columns = ['column1','column2','column3']
    df_resetindex = df_all.reset_index()
    df_json = df_resetindex.to_json(orient='values')
    
    return df_json

给出三个list测试下:

    data11 = [{'datetime': '2019-08-20', 'close': 4.85}, {'datetime': '2019-09-20', 'close': 4.85}, {'datetime': '2019-10-20', 'close': 4.85}, ]

    data21 = [{'datetime': '2019-01-20', 'close': 4.31}, {'datetime': '2019-08-20', 'close': 4.31}, {'datetime': '2019-03-20', 'close': 4.31}, ]

    data31 = [{'datetime': '2019-01-20', 'close': 6.0}, {'datetime': '2019-01-31', 'close': 5.5}, {'datetime': '2019-10-20', 'close': 5.0}, ]

运行结果如下:

可以看到已经合并了,然后按照数据集的模式打印出来。

最后有一个继续的困惑,如何将三个变成可变的?有解决方案的请留言帮助,感谢了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值