从 API 查询列表对象并将其返回到数据框中 - 格式问题
Querying a list object from API and returning it into dataframe - issues with format
我有下面的脚本,每个引用 (i) 的列表格式 returns 数据。我设置了一个空列表,然后使用 API 函数 get_kline_data 进行查询,并使用 .extend 函数
将每个输出传递到我的 klines_list
klines_list = []
a = ["REQ-ETH","REQ-BTC","XLM-BTC"]
for i in a:
klines = client.get_kline_data(i, '5min', 1619317366, 1619317606)
klines_list.extend([i,klines])
klines_list
klines_list然后returns这种格式的数据;
['REQ-ETH',
[['1619317500',
'0.0000491',
'0.0000491',
'0.0000491',
'0.0000491',
'5.1147',
'0.00025113177']],
'REQ-BTC',
[['1619317500',
'0.00000219',
'0.00000219',
'0.00000219',
'0.00000219',
'19.8044',
'0.000043371636']],
'XLM-BTC',
[['1619317500',
'0.00000863',
'0.00000861',
'0.00000863',
'0.00000861',
'653.5693',
'0.005629652673']]]
然后我尝试将其转换为数据帧;
import pandas as py
df = py.DataFrame(klines_list)
这是结果;
0
0 REQ-ETH
1 [[1619317500, 0.0000491, 0.0000491, 0.0000491,...
2 REQ-BTC
3 [[1619317500, 0.00000219, 0.00000219, 0.000002...
4 XLM-BTC
5 [[1619317500, 0.00000863, 0.00000861, 0.000008..
DF 的结构不正确,这似乎是由于我将列表放在一起的方式造成的。
我想要列中的定量数据对应于列表 a 中的正确条目,而不是行中的。此外,代码数据或列表 a、("REQ-ETH/REQ-BTC") 等应位于单独的列中。重组它的好方法是什么?
编辑:@Ynjxsjmh
这是按照下面的建议在 for 循环
中附加字典时的输出
REQ-ETH REQ-BTC XLM-BTC
0 [1619317500, 0.0000491, 0.0000491, 0.0000491, ... NaN NaN
1 NaN [1619317500, 0.00000219, 0.00000219, 0.0000021... NaN
2 NaN NaN [1619317500, 0.00000863, 0.00000861, 0.0000086...
pandas.DataFrame()
可以接受字典。它会将字典键构造为列 header,将字典值构造为列值。
import pandas as pd
a = ["REQ-ETH","REQ-BTC","XLM-BTC"]
klines_data = {}
for i in a:
klines = client.get_kline_data(i, '5min', 1619317366, 1619317606)
klines_data[i] = klines[0]
# ^
# |
# Add a key to klines_data
df = pd.DataFrame(klines_data)
print(df)
REQ-ETH REQ-BTC XLM-BTC
0 1619317500 1619317500 1619317500
1 0.0000491 0.00000219 0.00000863
2 0.0000491 0.00000219 0.00000861
3 0.0000491 0.00000219 0.00000863
4 0.0000491 0.00000219 0.00000861
5 5.1147 19.8044 653.5693
6 0.00025113177 0.000043371636 0.005629652673
如果klines
的长度不相等,可以用
df = pd.DataFrame.from_dict(klines_data, orient='index').T
我有下面的脚本,每个引用 (i) 的列表格式 returns 数据。我设置了一个空列表,然后使用 API 函数 get_kline_data 进行查询,并使用 .extend 函数
将每个输出传递到我的 klines_listklines_list = []
a = ["REQ-ETH","REQ-BTC","XLM-BTC"]
for i in a:
klines = client.get_kline_data(i, '5min', 1619317366, 1619317606)
klines_list.extend([i,klines])
klines_list
klines_list然后returns这种格式的数据;
['REQ-ETH',
[['1619317500',
'0.0000491',
'0.0000491',
'0.0000491',
'0.0000491',
'5.1147',
'0.00025113177']],
'REQ-BTC',
[['1619317500',
'0.00000219',
'0.00000219',
'0.00000219',
'0.00000219',
'19.8044',
'0.000043371636']],
'XLM-BTC',
[['1619317500',
'0.00000863',
'0.00000861',
'0.00000863',
'0.00000861',
'653.5693',
'0.005629652673']]]
然后我尝试将其转换为数据帧;
import pandas as py
df = py.DataFrame(klines_list)
这是结果;
0
0 REQ-ETH
1 [[1619317500, 0.0000491, 0.0000491, 0.0000491,...
2 REQ-BTC
3 [[1619317500, 0.00000219, 0.00000219, 0.000002...
4 XLM-BTC
5 [[1619317500, 0.00000863, 0.00000861, 0.000008..
DF 的结构不正确,这似乎是由于我将列表放在一起的方式造成的。
我想要列中的定量数据对应于列表 a 中的正确条目,而不是行中的。此外,代码数据或列表 a、("REQ-ETH/REQ-BTC") 等应位于单独的列中。重组它的好方法是什么?
编辑:@Ynjxsjmh 这是按照下面的建议在 for 循环
中附加字典时的输出REQ-ETH REQ-BTC XLM-BTC
0 [1619317500, 0.0000491, 0.0000491, 0.0000491, ... NaN NaN
1 NaN [1619317500, 0.00000219, 0.00000219, 0.0000021... NaN
2 NaN NaN [1619317500, 0.00000863, 0.00000861, 0.0000086...
pandas.DataFrame()
可以接受字典。它会将字典键构造为列 header,将字典值构造为列值。
import pandas as pd
a = ["REQ-ETH","REQ-BTC","XLM-BTC"]
klines_data = {}
for i in a:
klines = client.get_kline_data(i, '5min', 1619317366, 1619317606)
klines_data[i] = klines[0]
# ^
# |
# Add a key to klines_data
df = pd.DataFrame(klines_data)
print(df)
REQ-ETH REQ-BTC XLM-BTC
0 1619317500 1619317500 1619317500
1 0.0000491 0.00000219 0.00000863
2 0.0000491 0.00000219 0.00000861
3 0.0000491 0.00000219 0.00000863
4 0.0000491 0.00000219 0.00000861
5 5.1147 19.8044 653.5693
6 0.00025113177 0.000043371636 0.005629652673
如果klines
的长度不相等,可以用
df = pd.DataFrame.from_dict(klines_data, orient='index').T