gpt4 book ai didi

python - 更改多级层次结构中的索引 Pandas Dataframe

转载 作者:行者123 更新时间:2023-12-01 00:33:20 25 4
gpt4 key购买 nike

我有一个多级的DataFrame,并且有两个名为外部组、内部数字的级别。我想更改内部数字的索引。

outside='g1 g1 g1 g2 g2 g2'.split()
inside='1 2 3 1 2 3'.split()
hier_index=list(zip(outside,inside))
hier_index= pd.MultiIndex.from_tuples(hier_index)
df=pd.DataFrame(np.random.randn(6,3), hier_index, ['a','b','c'])

df.index.names = ['Outer Group', 'Inner Numbers']

所以我的 DataFrame 有外部 g1, g2 和内部 1,2,3 1,2,3。我想更改名称这些是我正在努力学习的。我不想要任何捷径,我想学的是如何

  1. g1,g2更改为X,Y
  2. 更改g1(123) -> X(a,b,c)
  3. 更改列的标签,例如 Outer Groups -> Level 1Inner Numbers -> Level 2

最佳答案

您可以将rename与字典一起使用并指定级别,可以使用DataFrame.rename_axis来更改索引名称。 :

df = df.rename({'g1':'X','g2':'Y'}, level=0)
df = df.rename({'1':'a','2':'b', '3':'c'}, level=1)
df = df.rename_axis(['Level 1','Level 2'])
print (df)
a b c
Level 1 Level 2
X a -1.085631 0.997345 0.282978
b -1.506295 -0.578600 1.651437
c -2.426679 -0.428913 1.265936
Y a -0.866740 -0.678886 -0.094709
b 1.491390 -0.638902 -0.443982
c -0.434351 2.205930 2.186786

或者通过MultiIndex.from_product创建新的MultiIndex并重新分配回来(新级别的两个列表的长度必须与原始列表相同):

mux = pd.MultiIndex.from_product([['X','Y'], ['a','b','c']], names=['Level 1','Level 2'])
df.index = mux
print (df)
a b c
Level 1 Level 2
X a -1.085631 0.997345 0.282978
b -1.506295 -0.578600 1.651437
c -2.426679 -0.428913 1.265936
Y a -0.866740 -0.678886 -0.094709
b 1.491390 -0.638902 -0.443982
c -0.434351 2.205930 2.186786

关于python - 更改多级层次结构中的索引 Pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58011087/

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