在保留结构的同时划分2个多索引数据帧
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在保留结构的同时划分2个多索引数据帧相关的知识,希望对你有一定的参考价值。
我有2个MultiIndex数据帧
第一个看起来像这样:
v 40 ... 200
p1 p2 p3 ... p2 p3 p4
dates ...
2019-12-01 0.031827 0.030943 0.027203 ... 0.014557 0.012797 0.010334
2019-12-02 0.027271 0.024006 0.022646 ... 0.011294 0.010654 0.010174
.to_dict()
->
A =
{
(43, 'p1'):
{
'2019-12-01': 0.0318271824,
'2019-12-02': 0.0272707268,
},
(43, 'p2'):
{
( ... )
},
(43, 'p3'):
{
( ... )
},
(210, 'p1'):
{
( ... )
}
}
第二个看起来像这样:
section1 section2 ... section3 section3
p1 p2 p3 p4 p1 ... p4 p1 p2 p3 p4
dates ...
2019-12-01 22.00 0.03 0.03 0.03 0.111 ... 0.03 0.03 0.03 0.03 0.03
2019-12-02 0.03 0.03 1.00 0.03 0.030 ... 0.03 0.03 0.03 0.03 0.03
.to_dict()
->
B =
{
('section1', 'p1'):
{
'2019-12-01': '22',
'2019-12-02': '0.03',
},
('section1', 'p2'):
{
( ... )
},
}
[我想将这两个数据帧一起分割(A / B),并返回与A相同的结构。因此:
v 40 ... 200
p1 p2 p3 ... p2 p3 p4
dates ...
2019-12-01 0.031827 / 22.00 0.030943 / 0.03 0.027203 / 0.03 ... 0.014557 0.012797 0.010334
2019-12-02 0.027271 0.024006 0.022646 ... 0.011294 0.010654 0.010174
我正在尝试尽快处理数据...
**编辑
为了更清楚一点,我想创建一个将A除以B并保持A的结构的数据框... i.E:
A = {
(43, 'p1'):
{
'2019-12-01': 0.0318271824
},
(210, 'p1'):
{
'2019-12-01': 0.0318271824
}
}
B = {
('section1', 'p1'):
{
'2019-12-01': '22',
},
('section1', 'p2'):
{
'2019-12-01': '22'
},
}
C = {
(43, 'p1'):
{
'2019-12-01': 22 / 0.0318271824
},
(210, 'p1'):
{
'2019-12-01': 22 / 0.0318271824
}
}
答案
我已经尝试过:
A.droplevel(0, 1).iloc[:, 0:].truediv(B.astype(float).droplevel(0, 1), axis=0)
唯一的问题是我失去了顶级索引,以及整体结构:
p1 p1 p1 ... p4 p4 p4
dates ...
2019-12-01 0.001447 0.286731 1.060906 ... 0.344460 0.344460 0.344460
2019-12-02 0.909024 0.909024 0.909024 ... 0.339128 0.339128 0.339128
以上是关于在保留结构的同时划分2个多索引数据帧的主要内容,如果未能解决你的问题,请参考以下文章