Python 从熊猫数据帧内部转换数据帧-Alice Blue API

Python 从熊猫数据帧内部转换数据帧-Alice Blue API,python,pandas,Python,Pandas,新手注意,请注意 在运行下面的代码行之后,我现在拥有的数据是 输入- data=pd.DataFrame(alice.\u AliceBlue\u主\u按符号签订合同) 输出- Index NSE 1018GS2026 GS Instrument(exchange='NSE', token=6833, symbol='1018GS2026 GS', name='GOI LOAN 10.18%

新手注意,请注意

在运行下面的代码行之后,我现在拥有的数据是

输入-

data=pd.DataFrame(alice.\u AliceBlue\u主\u按符号签订合同)
输出-

    Index                                       NSE
1018GS2026 GS   Instrument(exchange='NSE', token=6833, symbol='1018GS2026 GS', name='GOI LOAN 10.18% 
                2026', expiry=None, lot_size='1')
1025GS2021 GS   Instrument(exchange='NSE', token=6819, symbol='1025GS2021 GS', name='GOI LOAN 10.25% 
                2021', expiry=None, lot_size='1')
116GS2020 GS    Instrument(exchange='NSE', token=6814, symbol='116GS2020 GS', name='GOI LOAN 11.60% 
                2020', expiry=None, lot_size='1')
182D010721 TB   Instrument(exchange='NSE', token=1776, symbol='182D010721 TB', name='GOI TBILL 182D- 
                01/07/21', expiry=None, lot_size='100')
182D020921 TB   Instrument(exchange='NSE', token=2593, symbol='182D020921 TB', name='GOI TBILL 182D- 
                02/09/21', expiry=None, lot_size='100')
我想要一个像这样的数据框,从上面的数据框里面

    Index      Exchange  token     symbol             name            expiry  lot_size 
1018GS2026 GS    NSE     6833   1018GS2026 GS  GOI LOAN 10.18% 2026    None      1
1025GS2021 GS    NSE     6819   1025GS2021 GS  GOI LOAN 10.25% 2021    None      1
116GS2020 GS     NSE     6814   116GS2020 GS   GOI LOAN 11.60% 2020    None      1
182D010721 TB    NSE     1776   182D010721 TB  GOI TBILL 182D-01/07/21 None     100
182D020921 TB    NSE     2593   182D020921 TB  GOI TBILL 182D-02/09/21 None     100

有什么建议吗?伙计们,我该怎么办?

如果主合同以索引为键,以
工具
对象作为其值,那么应该很容易将其转换

rows = []

for val in alice._AliceBlue__master_contracts_by_symbol.values():
    row.append( [val.exchange, val.token, val.symbol, val.name,
                val.expiry, val.lot_size] )

df = pd.DataFrame( rows,
    index=alice._AliceBlue__master_contracts_by_symbol.keys(),
    columns=['exchange', 'token', 'symbol', 'name', 'expiry', 'lot_size']
)
编辑: 如果AliceBlue的东西真的是一个OrderedPict的OrderedPict,那么它就更容易了:

df = pd.DataFrame( 
    alice._AliceBlue__master_contracts_by_symbol.values(),
    index=alice._AliceBlue__master_contracts_by_symbol.keys()
)

正确的方法如下

df = pd.DataFrame(alice._AliceBlue__master_contracts_by_symbol)
df = pd.json_normalize([x._asdict() for x in df['NSE']]).set_index(df.index)

谢谢大家的帮助

什么是
alice.\u AliceBlue\u master\u contracts\u by\u symbol
?它是一本字典吗?您要做的是遍历该列表,并将其转换为pandas可以识别的格式。我的第一个想法是用“=”和分隔符“,”分割行。然后,您可以创建一个新的数据帧,其中包含相应的头和旧数据帧的每一列。这应该是你所期望的result@TimRoberts是的,这是一个dict,你能进一步说明吗,我理解有困难,我是一个新手,这是固定长度的数据吗?我指的是输入文件。您能按原样共享输入数据吗。@MattisSeehaus Hi bro,您能详细说明一下吗,我是一个彻头彻尾的noobHi,我尝试运行它,但出现了以下错误:AttributeError:“collections.OrderedDict”对象没有属性“exchange”Hi tim,因此,我将alice.\u AliceBlue\u master\u通过变量中的符号签订合同,我可以将该值视为集合模块的OrderedDict对象,当我打印它时,它的格式是-{[('ZYLOG',Instrument(exchange='NSE',token=14879,symbol='ZYLOG',name='ZYLOG SYSTEMS LTD',expiration=None,lot size=None)])}啊,如果它是OrderedDict,那就更容易了。我将修改答案。file:///C:/Users/Prakul/Downloads/Screenshot%20(66)webp