DataFrame的每一行都有字典,如何从每个字典中获取特定值

问题描述 投票:0回答:1

我正在做一些投资组合分析,并试图使用股票代码列表来获得一个工作函数来提取股票数据。这是我的清单:

Ticker_List={'Tickers':['SPY', 'AAPL', 'TSLA', 'AMZN', 'BRK.B', 'DAL', 'EURN', 'AMD', 
     'NVDA', 'SPG', 'DIS', 'SBUX', 'MMP', 'USFD', 'CHEF', 'SYY', 
     'GOOGL', 'MSFT']}

我正在像这样通过此函数传递列表:

Port=kit.d(Ticker_List)

def d(Ticker_List):
x=[]
for i in Ticker_List['Tickers']:
    x.append(Closing_price_alltime(i))
return x

def Closing_price_alltime(Ticker):
    Closedf=td_client.get_price_history(Ticker, period_type='year', period=20, frequency_type='daily', frequency=1)
    return Closedf

哪个从TDAmeritrade提取数据并给我回信:

[{'candles': [{'open': 147.46875,'high': 148.21875,
               'low': 146.875,'close': 147.125,
               'volume': 6998100,'datetime': 960181200000},
              {'open': 146.625,'high': 147.78125,
               'low': 145.90625,'close': 146.46875,
               'volume': 4858900,'datetime': 960267600000},
               ...],
  'symbol': 'MSFT',
  'empty': False}]`

(这只是示例)

最后,我要清理:

Port=pd.DataFrame(Port)
Port=pd.DataFrame.drop(Port, columns='empty')`

哪个提供了DataFrame:

    candles     symbol
0   [{'open': 147.46875, 'high': 148.21875, 'low': 146.875, 'close': 147.125, 'volume': 6998100, 'datetime': 960181200000}, {'open': 146.625, 'high': ...}  SPY
1   [{'open': 3.33259, 'high': 3.401786, 'low': 3.203126, 'close': 3.261161, 'volume': 80917200, 'datetime': 960181200000}, {'open': 3.284599, 'high':...}  AAPL

[此处未格式化,但索引为0,1等。Candles列包含每种股票行情的嵌套字典列表,而Symbol列包含股票代号。

我的目标是获取一个数据框,其索引为Datetime(从Candles列嵌套字典中),并为每只股票提供一列(标记为股票代码),并且在每一行中每天仅关闭股票专栏,删除所有其他内容。

我作为一个初学者项目已经工作了几天,我得到了它的工作,即分别分配每个股票,但是这既耗时又难以更改,带有列表的for循环非常多更好,我已经很接近要开始工作了。任何帮助将受到[[GREATLY的赞赏。

python pandas dataframe dictionary finance
1个回答
0
投票
Closing_price_alltime返回值:

d = [{'candles': [{'open': 147.46875,'high': 148.21875, 'low': 146.875,'close': 147.125, 'volume': 6998100,'datetime': 960181200000}, {'open': 146.625,'high': 147.78125, 'low': 145.90625,'close': 146.46875, 'volume': 4858900,'datetime': 960267600000} ], 'symbol': 'MSFT', 'empty': False}]

您可以这样提取符号,日期时间和结束时间。

import operator import pandas as pd data = operator.itemgetter('datetime','close') symbol = d[0]['symbol'] candles = d[0]['candles'] dt, closing = zip(*map(data, candles)) s = pd.Series(data=closing,index=dt,name=symbol)

© www.soinside.com 2019 - 2024. All rights reserved.