在多索引 Pandas 数据框中是否可以有一个列,其值引用更高级别的索引?

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

假设我在 Pandas 中有这样一个数据框:

df = pd.DataFrame({'a':[4,4,8,8],'b':[4,5,6,5], 'd':[0,1,2,1]})
multi_idx = pd.MultiIndex.from_arrays([[0,0,1,1],[0,1,0,1]])
df.index= multi_idx

输出这个形状:

     a  b  d
0 0  4  4  0
  1  4  5  1
1 0  8  6  2
  1  8  5  1

您会看到列

a
的值根据第一级索引重复。我正在寻找一种方法来避免这种重复。当然,其中一个是将信息分割到更多数据帧中,即为列
a
和第一级索引提供一个数据帧。但是,我想知道是否有某种方法使用多索引和多级列来创建其值对应于更高级别索引的所有行的列。

在视觉上我想要类似的东西:这在 Pandas 中可能吗?

|    |    |  a  |  b  |  c  | 
|----|----|-----|-----|-----|
|idx1|idx2|     |     |     |
|----|----|-----|-----|-----|
|    |  0 |     |  4  |  0  |
|  0 |----|  4  |-----|-----|
|    |  1 |     |  5  |  1  |
|----|----|-----|-----|-----|
|    |  0 |     |  6  |  2  |
|  1 |----|  8  |-----|-----|
|    |  1 |     |  5  |  1  |
|----|----|-----|-----|-----|
python pandas dataframe multi-index
1个回答
0
投票

不幸的是这是不可能的,pandas 没有合并单元格的概念。

如果您想“合并”连续的相同单元格,则必须使用 MultiIndex 才能从此显示中受益(尽管仅在初始级别),或者对 html 输出进行后处理以手动更改这些单元格的行距。

© www.soinside.com 2019 - 2024. All rights reserved.