gpt4 book ai didi

python - 访问 Pandas 数据框中内部多索引级别的最后一个元素

转载 作者:太空狗 更新时间:2023-10-29 20:23:52 39 4
gpt4 key购买 nike

multi index pandas dataframe 中,我想访问第二个索引的 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 行,所以我想避免显式循环。

最佳答案

使用groupbytail :

print (df.groupby(level='first').tail(1))
A B C
first second
bar two 0.053054 -0.555819 0.589998
baz one -0.868676 1.293633 1.339474
foo three 0.407454 0.738872 1.811894
qux one -0.346014 -1.491270 0.446772

因为last丢失 level second:

print (df.groupby(level='first').last())         
A B C
first
bar 0.053054 -0.555819 0.589998
baz -0.868676 1.293633 1.339474
foo 0.407454 0.738872 1.811894
qux -0.346014 -1.491270 0.446772

关于python - 访问 Pandas 数据框中内部多索引级别的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38053687/

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