gpt4 book ai didi

pandas - 连接 pandas DataFrame 中子级列的所有组合

转载 作者:行者123 更新时间:2023-12-04 01:05:27 28 4
gpt4 key购买 nike

给定以下 DataFrame:

cols = pd.MultiIndex.from_product([['A', 'B'], ['a', 'b']])
example = pd.DataFrame([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]], columns=cols)
example
        A       B
a b a b
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11

我想以下面的结尾:

    A   B
0 0 2
1 4 6
2 8 10
3 0 3
4 4 7
5 8 11
6 1 2
7 5 6
8 9 10
9 1 3
10 5 7
11 9 11

我使用了这段代码:

concatenated = pd.DataFrame([])
for A_sub_col in ('a', 'b'):
for B_sub_col in ('a', 'b'):
new_frame = example[[['A', A_sub_col], ['B', B_sub_col]]]
new_frame.columns = ['A', 'B']
concatenated = pd.concat([concatenated, new_frame])

但是,我强烈怀疑 Pandas 有更直接、更惯用的方法来做到这一点。怎么办?

最佳答案

这是一个使用列表理解的选项:

pd.concat([
example[[('A', i), ('B', j)]].droplevel(level=1, axis=1)
for i in example['A'].columns
for j in example['B'].columns
]).reset_index(drop=True)

输出:

    A   B
0 0 2
1 4 6
2 8 10
3 0 3
4 4 7
5 8 11
6 1 2
7 5 6
8 9 10
9 1 3
10 5 7
11 9 11

关于pandas - 连接 pandas DataFrame 中子级列的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66629040/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com