python – 将数据帧输出到json数组
我想知道是否有更有效的方法来执行以下操作.
# transforms datetime into timestamp in seconds t = df.index.values.astype(np.int64) // 10**6 return jsonify(np.c_[t,df.open,df.high,df.low,df.close,df.volume].tolist()) 其中df是一个包含索引的数据框,该索引是一个日期,并且至少(但不仅仅是)以下属性:open,high,low,close,volume.然后我使用flask的jsonify将新创建的数组输出为JSON.上面的代码可以工作,但对于我如何使其更好/更高效的任何想法,它看起来非常低效. 解决方法
你可以使用
to_json()方法:
In [88]: import pandas_datareader.data as web In [89]: apl = web.get_data_yahoo('AAPL','2016-07-05','2016-07-07') In [90]: apl Out[90]: Open High Low Close Volume Adj Close Date 2016-07-05 95.389999 95.400002 94.459999 94.989998 27705200 94.989998 2016-07-06 94.599998 95.660004 94.370003 95.529999 30949100 95.529999 2016-07-07 95.699997 96.500000 95.620003 95.940002 25139600 95.940002 我将使用json.dumps(…,indent = 2)以使其更好/可读: In [91]: import json 东方=“索引” In [98]: print(json.dumps(json.loads(apl.to_json(orient='index')),indent=2)) { "1467849600000": { "Close": 95.940002,"High": 96.5,"Open": 95.699997,"Adj Close": 95.940002,"Volume": 25139600,"Low": 95.620003 },"1467676800000": { "Close": 94.989998,"High": 95.400002,"Open": 95.389999,"Adj Close": 94.989998,"Volume": 27705200,"Low": 94.459999 },"1467763200000": { "Close": 95.529999,"High": 95.660004,"Open": 94.599998,"Adj Close": 95.529999,"Volume": 30949100,"Low": 94.370003 } } orient =’records'(重置索引以使列Date可见): In [99]: print(json.dumps(json.loads(apl.reset_index().to_json(orient='records')),indent=2)) [ { "Close": 94.989998,"Date": 1467676800000,{ "Close": 95.529999,"Date": 1467763200000,"Low": 94.370003 },{ "Close": 95.940002,"Date": 1467849600000,"Low": 95.620003 } ] 您可以使用以下to_json()参数:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |