我尝试多次使用替换方法,以便更改多索引熊猫数据帧的给定级别的索引。
如下所示:Pandas:修改 Multiindex 的特定级别,@John 得到了一个解决方案,只要使用一次替换方法,该解决方案就可以很好地工作。
问题是,如果我多次使用这个方法,它就不起作用了。例如
df.index = df.index.set_levels(df.index.levels[0].str.replace("dataframe_",'').replace("_r",' r'), level=0)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
AttributeError: 'Index' object has no attribute 'replace'
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
pd.__version__
'0.15.2'
Run Code Online (Sandbox Code Playgroud)
我有一个熊猫的数据框,具有三个级别的多重索引。当我连接两个数据帧时,它将最低索引变成了一个浮点数,它应该是一个字符串。

idx=str(dfmaster_stats.index.levels[2]).replace('.0', '')
Run Code Online (Sandbox Code Playgroud)
TypeError: 'FrozenList' does not support mutable operations.
Run Code Online (Sandbox Code Playgroud)
我查看了其他问题,发现无法更改多索引,因此我尝试重新索引数据帧。我遵循了这个问题,但这两种解决方案都不起作用。
我也尝试过 set_levels,但不确定语法。
dfmaster_stats.index.set_levels(dfmaster_stats.index.levels[2](idx), level =2)
Run Code Online (Sandbox Code Playgroud)
给我这个错误
TypeError: 'Index' object is not callable
Run Code Online (Sandbox Code Playgroud) 我尝试更改多索引DataFrame的时区但是我得到一个冻结列表错误.有人知道怎么办吗?
>>> array = [('s001', d) for d in pd.date_range(start='01/01/2014', end='01/01/2015', freq='H')] + [('s002', d) for d in pd.date_range(start='01/01/2014', end='01/01/2015', freq='H')]
>>> index = pd.MultiIndex.from_tuples(array, names=['sce', 'DATES'])
>>> df = pd.DataFrame(np.random.randn(len(index)), index=index)
>>> df.index.levels[1] = df.index.levels[1].tz_localize('Etc/GMT-1', ambiguous = 'NaT')
Run Code Online (Sandbox Code Playgroud)
回溯(最近一次调用最后一次):File"C:\ Pythons\lib\python\pandas-0.15.0rc1-py2.7-win32.egg\pandas\core\base.py"中的文件"",第1行,第221行,在_disabled self中.上课.name)TypeError:'FrozenList'不支持可变操作.