加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将数据帧输出到json数组

发布时间:2020-12-20 12:11:03 所属栏目:Python 来源:网络整理
导读:我想知道是否有更有效的方法来执行以下操作. # transforms datetime into timestamp in secondst = df.index.values.astype(np.int64) // 10**6return jsonify(np.c_[t,df.open,df.high,df.low,df.close,df.volume].tolist()) 其中df是一个包含索引的数据框,
我想知道是否有更有效的方法来执行以下操作.

# 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()参数:

date_format : {‘epoch’,‘iso’}

Type of date conversion. epoch = epoch milliseconds,iso` = ISO8601,default is epoch.

date_unit : string,default ‘ms’ (milliseconds)

The time unit to encode to,governs timestamp and ISO8601 precision.
One of ‘s’,‘ms’,‘us’,‘ns’ for second,millisecond,microsecond,and
nanosecond respectively.

orient : string

The format of the JSON string

  • split : dict like {index -> [index],columns -> [columns],data -> [values]}
  • records : list like [{column -> value},…,{column -> value}]
  • index : dict like {index -> {column -> value}}
  • columns : dict like {column -> {index -> value}} values : just the values array

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读