gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:45:51 27 4
gpt4 key购买 nike

想知道有没有更高效的方法来做下面的操作。

# 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 是一个包含日期索引的数据框,并且至少(但不仅限于)以下属性:openhigh关闭音量。然后,我使用 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

orient='index'

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,
"High": 95.400002,
"Open": 95.389999,
"Adj Close": 94.989998,
"Volume": 27705200,
"Date": 1467676800000,
"Low": 94.459999
},
{
"Close": 95.529999,
"High": 95.660004,
"Open": 94.599998,
"Adj Close": 95.529999,
"Volume": 30949100,
"Date": 1467763200000,
"Low": 94.370003
},
{
"Close": 95.940002,
"High": 96.5,
"Open": 95.699997,
"Adj Close": 95.940002,
"Volume": 25139600,
"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, andnanosecond 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

关于python - 将数据帧输出到 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38688072/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com