df.set_index()
有一个append参数,用于向现有索引添加列。但是没有preend参数可以将列添加到现有索引中。为什么没有preend参数?我知道规避这个问题的唯一方法是在使用.set_index()
之后使用.reorder_levels()
:
df.set_index('new_col', append=True, inplace=True)
df = df.reorder_levels(["new_col", "old_index"])
根据熊猫的一个开发人员(强调添加):
所以开发者愿意在我不认为有
append
和prepend
使一个好的API,特别是因为它现在不涵盖用户可能想要插入到中间的用例多索引的。最初的想法是将level
作为int与append
一起提供可能是最有意义的,尽管在我看来仍然不理想。
set_index
中考虑这种类型的功能,只是而不是通过prepend
参数。关于适当API的讨论在issue #26742中继续进行。
还请注意,除了reorder_levels
之外,问题#26742还提供了几个替代方案:
.reset_index().set_index(...)
.set_index(append=True).swaplevel(...)
.set_index(append=True).reorder_levels(...)