gpt4 book ai didi

python - 将一些 DataFrame 列重新索引为多索引

转载 作者:行者123 更新时间:2023-12-01 03:40:46 26 4
gpt4 key购买 nike

在我的工作流程中的某个时刻,我最终得到了一个带有一些列和一些行的常规 pandas DataFrame。我想使用 df.to_latex() 将此 DataFrame 导出到 latex 表中。这很有效,但是,我知道想要使用多列,其中某些列是多表的一部分。例如,一个包含 a、b、c、d、e 列的 DataFrame,我希望将 a 列保留原样,但将 b 和 c、d 和 e 分组。

import numpy as np
import pandas as pd

# where I am
data = np.arange(15).reshape(3, 5)
df = pd.DataFrame(data=data, columns=['a', 'b', 'c', 'd', 'e'])

看起来像这样:

In [161]: df
Out[161]:
a b c d e
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14

我想将 b 列和 c 列以及 d 和 e 列分组,但保留 a 列。所以我想要的输出应该是这样的。

# where I want to be: leave column 'a' alone, group b&c as well as d&e
multi_index = pd.MultiIndex.from_tuples([
('a', ''),
('bc', 'b'),
('bc', 'c'),
('de', 'd'),
('de', 'e'),
])
desired = pd.DataFrame(data, columns=multi_index)

看起来像这样:

In [162]: desired
Out[162]:
a bc de
b c d e
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14

为了到达那里,我尝试了一个简单的重新索引。这给了我想要的形状,但所有列都只得到 NaN 作为值。

# how can use df and my multiindexreindex to multi column DataFrame
result = df.reindex(columns=multi_index)

结果看起来像描述的那样,索引正确,但都是 NaN

In [166]: result
Out[166]:
a bc de
b c e e
0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN

怎样才能得到我想要的结果?

最佳答案

您可以直接将 multiIndex 分配给数据框的 columns 属性:

df.columns = multi_index
df

enter image description here

关于python - 将一些 DataFrame 列重新索引为多索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39663486/

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