我有这样的结构:
[
[
('2019-12-01', '0.03555', '0.03', '0.03', '0.03'),
('2019-12-02', '0.03', '0.03', '1', '0.03')
],
[
('2019-12-01', '0.111', '0.02', '0.03', '0.03'),
('2019-12-02', '0.03', '0.03', '0.03', '0.03')
]
]
我希望每个列表条目都是pandas数据框中的索引,而元组是df中的行。像这样:
LIST_1 LIST_2
date p1 p2 p3 p4 | p1 p2 p3 p4
0 2019-12-01 0.03555 0.03 0.03 0.03 | 0.03 0.03 0.03 0.03
1 2019-12-02 0.03 0.03 1 0.03 | 0.03 0.03 0.03 0.03
我知道这很麻烦,老实说,我不确定在Pandas中构建它的最佳方法,因为我是新来的,所以任何建议都将不胜感激。
我尝试使用以下方法来压平结构:
d = pd.DataFrame([t for lst in a for t in lst])
但是随后,我只得到了一个预期的df,像这样:
0 1 2 3 4
0 2019-12-01 0.03555 0.03 0.03 0.03
1 2019-12-02 0.03 0.03 1 0.03
2 2019-12-01 0.111 0.02 0.03 0.03
3 2019-12-02 0.03 0.03 0.03 0.03
但这不适合
答案 0 :(得分:1)
使用列表推导来创建MultiIndex
的{{1}}的第一级,其中列表range
的长度为lst
s。
然后使用list的所有值进行主列表理解,并将内部列表转换为f-string
,按DataFrame.set_index
按第一列创建索引,然后按DataFrame.add_prefix
重命名列。
在DateFrame
的第一级中,最后通过concat
和keys
参数连接DataFrames的所有列表,并通过DataFrame.rename_axis
删除索引名称MultiIndex
:
0