【发布时间】:2016-10-29 10:50:12
【问题描述】:
在multi index pandas 数据框中,我想访问第二个索引的 last 元素以获取第一个索引的所有值。第二个索引中的级别数取决于第一个索引的值。我浏览了pandas multi index documentation,但找不到任何可以做到这一点的东西。
例如,对于下面的数据框:
arrays = [ ['bar', 'bar', 'baz', 'foo', 'foo', 'foo', 'qux'],
['one', 'two', 'one', 'one', 'two', 'three', 'one']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(7, 3), index=index, columns=['A', 'B', 'C'])
df
A B C
first second
bar one 0.289163 -0.464633 -0.060487
two 0.224442 0.177609 2.156436
baz one -0.262329 -0.248384 0.925580
foo one 0.051350 0.452014 0.206809
two 2.757255 -0.739196 0.183735
three -0.064909 -0.963130 1.364771
qux one -1.330857 1.881588 -0.262170
我想得到:
A B C
first second
bar two 0.224442 0.177609 2.156436
baz one -0.262329 -0.248384 0.925580
foo three -0.064909 -0.963130 1.364771
qux one -1.330857 1.881588 -0.262170
我正在使用的dataframes 有超过10M 行,所以我想避免显式循环。
【问题讨论】:
-
你可以做
df.groupby(level='first').last()
标签: python pandas indexing dataframe multi-index