gpt4 book ai didi

python - 将列拆分为 MultiIndex,在 pandas 中缺少列

转载 作者:太空狗 更新时间:2023-10-30 00:53:31 24 4
gpt4 key购买 nike

这和我问的问题很相似here .但是,我发现我正在处理的数据并不总是一致的。例如说:

import pandas as pd

df = pd.DataFrame(pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]],columns=["X_a","Y_c","X_b","Y_a"]))

X_a Y_c X_b Y_a
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12

现在你可以看到 X 没有对应的 c 列并且 Y 没有对应的 b柱子。现在,当我想创建多级索引时,我希望数据框看起来像这样:

     X             Y
a b c a b c
0 1 3 -1 4 -1 2
1 5 7 -1 8 -1 6
2 9 11 -1 12 -1 10

如您所见,我希望以所有上层列都应具有相同下层列的方式进行拆分。由于数据集是正的,我正在考虑用 -1 填充缺失的列,尽管我愿意就此提出建议。我发现最接近我的问题的是 this answer .但是,我无法像在上一个问题中那样以某种方式使用 MultiLevel Index 。感谢您的帮助。

最佳答案

创建一个MultiIndex并设置df.columns

idx = df.columns.str.split('_', expand=True)
idx
MultiIndex(levels=[['X', 'Y'], ['a', 'b', 'c']],
labels=[[0, 1, 0, 1], [0, 2, 1, 0]])

df.columns = idx

现在,使用现有的 MultiIndex,创建一个新索引并使用它来重新索引 原始索引。

idx = pd.MultiIndex.from_product([idx.levels[0], idx.levels[1]])
idx
MultiIndex(levels=[['X', 'Y'], ['a', 'b', 'c']],
labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])

df.reindex(columns=idx, fill_value=-1)
X Y
a b c a b c
0 1 3 -1 4 -1 2
1 5 7 -1 8 -1 6
2 9 11 -1 12 -1 10

关于python - 将列拆分为 MultiIndex,在 pandas 中缺少列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250972/

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