import pandas as pd
import numpy as np
np.random.seed(0)
idx = pd.MultiIndex.from_product([['John', 'Josh', 'Alex'], list('abcde')],
names=['Person', 'Letter'])
large = pd.DataFrame(data=np.random.randn(15, 2),
index=idx,
columns=['one', 'two'])
small = large.loc[['Jo'==d[0:2] for d in large.index.get_level_values('Person')]]
print small.index.levels[0]
print large.index.levels[0]
2 回答
Andy Hayden的答案(
index.levels[blah]
)对于某些场景非常有用,但可能导致其他场景中的奇怪行为 . 我的理解是,在可能的情况下,Pandas竭尽全力避免使用大量类似索引的DataFrame的索引占用内存空间 . 结果,I've found the following annoying behavior:哪个输出
而不是预期的
正如一个人在另一个帖子中指出的那样,一个似乎非常自然并且正常工作的成语将是:
我希望这有助于其他人躲避我遇到的超意外行为 .
一种方法是使用index.levels: