我使用 API 提取了一堆数据并将它们 read_csv 转换为 df。数据采用列表格式列表如下:
[["Datestamp","A","B","C","D","E","F"],
["2019-02-25T00:00:00",88,91,90,88,85,88.4],
["2019-02-26T00:00:00",88,91,90,88,85,88.4],
["2019-02-27T00:00:00",87,90,89,87,84,87.4],
["2019-02-28T00:00:00",87,90,89,87,84,87.4],
["2019-03-01T00:00:00",87,90,89,87,84,87.4],
["2019-03-04T00:00:00",87,90,89,87,84,87.4],
["2019-03-05T00:00:00",87,90,89,87,84,87.4],
["2019-03-06T00:00:00",88,91,90,88,85,88.4],...]
第一个列表应该是标题 如何将其更改为以下数据帧格式,其中每个列表是数据帧的一行:
数据戳 | A | B | C | D | E | F |
---|---|---|---|---|---|---|
2019-02-25T00:00:00 | 88 | 80 | 90 | 84 | 80 | 90 |
2019-02-25T00:00:00 | 88 | 80 | 90 | 84 | 80 | 90 |
2019-02-25T00:00:00 | 88 | 80 | 90 | 84 | 80 | 90 |
感谢您的帮助!
在此处发布完整代码:
import requests
import json
import pandas as pd
import io
# Get Authentication token
url = "https://analytics.bmocm.com/auth/login"
payload = json.dumps({
"username": "<username>",
"password": "<password>"
})
headers = {
'Content-Type': "application/json",
'Cache-Control': "no-cache"
}
response = requests.request("POST", url, data=payload, headers=headers)
# print(response.text)
authData = json.loads(response.text)
token = authData["token"]
# query for historical data
query = {
"StartDate": "2019-02-24T00:00:00",
"EndDate": "2020-02-24T00:00:00",
"SortOrder": "asc",
"JoinType": "outer",
"returnHeader": "true",
"Commands": [
[1, "CorpSpreads,bmo,5", "true", 1, "A Senior,5"],
[2, "CorpSpreads,bns,5", "true", 1, "B Senior,5"],
[3, "CorpSpreads,cm,5", "true", 1, "C Senior,5"],
[4, "CorpSpreads,ry,5", "true", 1, "D Senior, 5"],
[5, "CorpSpreads,td,5", "true", 1, "E Senior,5"],
[6, "=(A1+A2+A3+A4+A5)/5", "true", 0, "Average"]
]
}
jsonQuery = json.dumps(query)
url = "https://analytics.bmocm.com/sapphire/sapphireQuery"
payload = jsonQuery
headers = {
'Content-Type': "application/json",
'Authorization': "Bearer " + token,
'Cache-Control': "no-cache"
}
# Sapphire query request
response = requests.request("POST", url, data=payload, headers=headers)
#print(response.text)
list = pd.read_csv(io.StringIO(response.text),header=None)
df=pd.DataFrame(list[1:],columns=list[0])
df.head()
答案 0 :(得分:1)
您可以将列表导入 Panda 的 DataFrame
,如下所示:
import pandas as pd
data_list = [
["Datestamp", "A", "B", "C", "D", "E", "F"],
["2019-02-25T00:00:00", 88, 91, 90, 88, 85, 88.4],
["2019-02-26T00:00:00", 88, 91, 90, 88, 85, 88.4],
["2019-02-27T00:00:00", 87, 90, 89, 87, 84, 87.4],
["2019-02-28T00:00:00", 87, 90, 89, 87, 84, 87.4],
["2019-03-01T00:00:00", 87, 90, 89, 87, 84, 87.4],
["2019-03-04T00:00:00", 87, 90, 89, 87, 84, 87.4],
["2019-03-05T00:00:00", 87, 90, 89, 87, 84, 87.4],
["2019-03-06T00:00:00", 88, 91, 90, 88, 85, 88.4],
]
data_df = pd.DataFrame(data_list[1:], columns=data_list[0])
print(data_df.head())
Datestamp A B C D E F
0 2019-02-25T00:00:00 88 91 90 88 85 88.4
1 2019-02-26T00:00:00 88 91 90 88 85 88.4
2 2019-02-27T00:00:00 87 90 89 87 84 87.4
3 2019-02-28T00:00:00 87 90 89 87 84 87.4
4 2019-03-01T00:00:00 87 90 89 87 84 87.4