我有一个我想使用的MultiIndex数据框架的结构(灵感来自文档)。我想用一个命令在每一层示例化它。
MultiIndex Dataframe一般结构:
import pandas as pd
def mklbl(prefix, n):
return ["%s%s" % (prefix, i) for i in range(n)]
miindex = pd.MultiIndex.from_product(
[mklbl("X", 2), mklbl("Y", 2), mklbl("Z", 2)]
)
columns = ['A', 'B', 'C']
dfmi = (
pd.DataFrame(
# Code below from the documentation. To replace??
# np.arange(len(miindex) * len(columns)).reshape(
# (len(miindex), len(columns))
),
index=miindex,
columns=columns,
)
.sort_index()
.sort_index(axis=1)
)
字符串
我想以某种方式取代上面的注解代码由以下字典的几个重复,这适合与MultiIndex,
my_dict = {'A': [False, False, True, True],
'B': [False, True, False, True],
'C': [0, 0, 0, 0]}
型
这样我就得到了一个最终结果:
A B C
X0 Y0 Z0 False False 0
False True 0
True False 0
True True 0
Z1 False False 0
False True 0
True False 0
True True 0
Y1 Z0 False False 0
False True 0
True False 0
True True 0
Z1 False False 0
False True 0
True False 0
True True 0
X1 Y0 Z0 False False 0
False True 0
True False 0
True True 0
Z1 False False 0
False True 0
True False 0
True True 0
Y1 Z0 False False 0
False True 0
True False 0
True True 0
Z1 False False 0
False True 0
True False 0
True True 0
型
我试着用pd.concat()
玩了一下,但没有成功。这可能吗?
2条答案
按热度按时间a5g8bdjr1#
您可以将合并
concat
和itertools.product
组合在一起:字符串
或者,如果你已经有了
dfmi
,使用cross-merge
:型
输出量:
型
qzwqbdag2#
为了用dict填充你的嵌套框,你应该根据嵌套框列的长度再增加一个级别:
字符串
然后你可以通过像这样循环索引来添加你的dict:
型
结果如下:
型