gpt4 book ai didi

pandas - 重命名 Pandas 中的 MultiIndex 列

转载 作者:行者123 更新时间:2023-12-03 08:22:09 25 4
gpt4 key购买 nike

df = pd.DataFrame([[1,2,3], [10,20,30], [100,200,300]])
df.columns = pd.MultiIndex.from_tuples((("a", "b"), ("a", "c"), ("d", "f")))
df

返回
     a         d
b c f
0 1 2 3
1 10 20 30
2 100 200 300


df.columns.levels[1]

返回
Index([u'b', u'c', u'f'], dtype='object')

我要重命名 "f""e" .根据 pandas.MultiIndex.rename 我跑:
df.columns.rename(["b1", "c1", "f1"], level=1)

但它提高了
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-110-b171a2b5706c> in <module>()
----> 1 df.columns.rename(["b1", "c1", "f1"], level=1)

C:\Users\USERNAME\AppData\Local\Continuum\Miniconda2\lib\site-packages\pandas\indexes\base.pyc in set_names(self, names, level, inplace)
994 if level is not None and not is_list_like(level) and is_list_like(
995 names):
--> 996 raise TypeError("Names must be a string")
997
998 if not is_list_like(names) and level is None and self.nlevels > 1:

TypeError: Names must be a string

我用 Python 2.7.12 |Continuum Analytics, Inc.| (default, Jun 29 2016, 11:07:13) [MSC v.1500 64 bit (AMD64)]'pandas 0.19.1

最佳答案

使用 set_levels :

In [22]:
df.columns.set_levels(['b1','c1','f1'],level=1,inplace=True)
df

Out[22]:
a d
b1 c1 f1
0 1 2 3
1 10 20 30
2 100 200 300

rename 设置索引的名称,它不会重命名列名:
In [26]:
df.columns = df.columns.rename("b1", level=1)
df

Out[26]:
a d
b1 b c f
0 1 2 3
1 10 20 30
2 100 200 300

这就是您收到错误的原因

关于pandas - 重命名 Pandas 中的 MultiIndex 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41221079/

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