我有一个多索引,我想将其所有级别转换为浮点数。
我正在执行以下操作:
my_dataframe.index.map(lambda i: (float(i[0]), float(i[1])))
但是,如果我有很多级别,这似乎不能很好地“缩放”。
我尝试过:
my_dataframe.index.astype(np.float, copy=False)
但失败并显示TypeError
:
TypeError: Setting <class 'pandas.core.indexes.multi.MultiIndex'> dtype to anything other than object is not supported
实现这一目标的最佳/最简单的方法是什么?
答案 0 :(得分:2)
您可以使用get_level_values
来选择级别,转换为float
,最后一次:
a = my_dataframe.index.get_level_values(0).astype(float)
b = my_dataframe.index.get_level_values(1).astype(float)
my_dataframe.index = [a,b]
或者:
my_dataframe = my_dataframe.set_index([a,b])
使用MultiIndex.set_levels
的另一种解决方案:
a = my_dataframe.index.levels[0].astype(float)
b = my_dataframe.index.levels[1].astype(float)
my_dataframe.index = my_dataframe.index.set_levels([a,b])
或者:
my_dataframe = my_dataframe.set_index(my_dataframe.index.set_levels([a,b]))