我正在检索实时财务数据。 每隔1秒,我就会拉出以下列表:
[{'symbol':'ETHBTC','price':'0.03381600'},{'symbol':'LTCBTC','price':>'0.01848300'} ...]
目标是将此列表放入已存在的熊猫DataFrame中。
到目前为止,我所做的就是将字典的列表转换为pandas DataFrame。我的问题是符号和价格在两列中。我想将符号作为DataFrame标头,并每隔1秒添加一条包含价格值的新行。
marketInformation = [{'symbol': 'ETHBTC', 'price': '0.03381600'}, {'symbol': 'LTCBTC', 'price': >'0.01848300'}...]
data = pd.DataFrame(marketInformation)
header = data['symbol'].values
newData = pd.DataFrame(columns=header)
while True:
realTimeData = ... // get a new marketInformation list of dict
newData.append(pd.DataFrame(realTimeData)['price'])
print(newData)
不幸的是,打印的DataFrame始终为空。我想每秒钟添加一个新行,并在当前时间为每个交易品种添加新价格。 我打印了以下部分:
pd.DataFrame(realTimeData)['price']
它给了我一个pandas.core.series.Series对象,其长度等于符号的数量。
怎么了?
答案 0 :(得分:0)
创建newData
后,只需执行以下操作:
newData.loc[len(newData), :] = [item['price'] for item in realTimeData]
答案 1 :(得分:0)
您只需要set_index()
然后转置df:
newData = pd.DataFrame(marketInformation).set_index('symbol').T
#In [245]: newData
#Out[245]:
#symbol ETHBTC LTC
#price 0.03381600 0.01848300
# then change the index to whatever makes sense to your data
newdata_time = pd.Timestamp.now()
newData.rename(index={'price':newdata_time})
#Out[246]:
#symbol ETHBTC LTC
#2019-04-03 17:08:51.389359 0.03381600 0.01848300