gpt4 book ai didi

python - 排序 pandas MultiIndex

转载 作者:太空狗 更新时间:2023-10-30 02:43:05 25 4
gpt4 key购买 nike

我使用另一个 Dataframe 创建了一个带有 MultiIndex 的 Dataframe:

arrays = [df['bus_uid'], df['bus_type'], df['type'],
df['obj_uid'], df['datetime']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['bus_uid', 'bus_type', 'type',
'obj_uid', 'datetime'])
multindex_df = pd.DataFrame(df['val'].values, index=index)

如文档 http://pandas.pydata.org/pandas-docs/stable/advanced.html 中所述,这工作正常.

在文档中,它还在“使用 MultiIndex 进行排序的必要性”下指出需要对标签进行排序,以便正确工作索引和切片功能。

但不知何故

multindexed_df.sort_index(level=0)

multindexed_df.sort_index(level='bus_uid')

不再工作并抛出 TypeError: sort_index() got an unexpected keyword argument 'level'

sort_index() 上查找对象信息,看起来“by”是我的新 friend 而不是“levels”:

by:object
Column name(s) in frame. Accepts a column name or a list for a nested sort. A tuple will be interpreted as the levels of a multi-index.

我的问题如下:如何对我的 MultiIndex 进行排序,以便所有功能(切片等)都能正常工作?

最佳答案

答案取决于您使用的 pandas 版本。使用latest pandas (>= 0.17.0),您确实可以使用level 关键字来指定对多索引的哪个级别进行排序:

df = df.sort_index(level=0)

但是,如果您有一个旧版 pandas (< 0.17.0),则此 level 关键字尚不可用,但您可以使用 sortlevel 方法:

df = df.sortlevel(level=0)

但是请注意,如果你想对所有级别进行排序,你不需要指定level关键字,你可以这样做:

df = df.sort_index()

这对最新版本和旧版本的 pandas 都适用。


有关排序 API 中这些更改的摘要,请参阅 http://pandas.pydata.org/pandas-docs/stable/whatsnew.html#changes-to-sorting-api

关于python - 排序 pandas MultiIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590529/

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