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