MultiIndex 和列表之间的乘积

问题描述 投票:0回答:1

我有一个具有 2 个级别的 MultiIndex 对象:

import pandas as pd
mux = pd.MultiIndex.from_tuples([(1,1), (2,3)])
>>>
MultiIndex([(1, 1),
            (2, 3)],
           )

我想将它乘以一个列表

l=[4,5]
,我尝试过

pd.MultiIndex.from_product([mux.values, [4,5]])
>>>
MultiIndex([((1, 1), 4),
            ((1, 1), 5),
            ((2, 3), 4),
            ((2, 3), 5)],
           )

我成功地得到了我的预期结果

from itertools import product
pd.MultiIndex.from_tuples([(*a, b) for a, b in product(mux, [4,5])])
>>>
MultiIndex([(1, 1, 4),
            (1, 1, 5),
            (2, 3, 4),
            (2, 3, 5)],
           )

有更好的方法来进行此操作吗?

python pandas multi-index cartesian-product
1个回答
0
投票

我觉得你的做法很合理。

使用跨

merge
和中间 DataFrame 格式的另一个选项:

pd.MultiIndex.from_frame(mux.to_frame().merge(pd.Series([4, 5], name=2), how='cross'))

输出:

MultiIndex([(1, 1, 4),
            (1, 1, 5),
            (2, 3, 4),
            (2, 3, 5)],
           names=[0, 1, 2])
© www.soinside.com 2019 - 2024. All rights reserved.