gpt4 book ai didi

python - 从多索引数据框中删除最后一行

转载 作者:行者123 更新时间:2023-12-01 07:34:43 24 4
gpt4 key购买 nike

我有一个 Pandas 数据框,看起来像这样:

                   close      volume
date ticker
2017-01-03 AAPL 116.15 28781865.0
AMZN 753.67 3521066.0
MSFT 62.58 20694101.0
TSLA 216.99 5923254.0
2017-01-04 AAPL 116.02 21118116.0
AMZN 757.18 2510526.0
MSFT 62.30 21339969.0
TSLA 226.99 11213471.0
2017-01-05 AAPL 116.61 22193587.0
AMZN 780.45 5830068.0
MSFT 62.30 24875968.0
TSLA 226.75 5911695.0
2017-01-06 AAPL 117.91 31751900.0
AMZN 795.99 5986234.0
MSFT 62.84 19922919.0
TSLA 229.01 5527893.0
2017-01-09 AAPL 118.99 33561948.0
AMZN 796.92 3446109.0
MSFT 62.64 20382730.0
TSLA 231.28 3979484.0
2017-01-10 AAPL 119.11 24462051.0
AMZN 795.90 2558369.0
MSFT 62.62 18593004.0
TSLA 229.87 3659955.0

我想删除“日期”索引级别中的所有行,除了最近的日期(始终是最后一行)。所以在这种情况下结果应该是:

                   close      volume
date ticker
2017-01-10 AAPL 119.11 24462051.0
AMZN 795.90 2558369.0
MSFT 62.62 18593004.0
TSLA 229.87 3659955.0

我已经尝试过

pricing.drop(pricing.index[0:len(pricing)-1])

但这查看的是“股票代码”级别而不是日期级别,仅返回最后一行而不是最后日期的所有行:

                   close      volume
date ticker

2017-01-10 TSLA 229.87 3659955.0

我尝试向其中添加 level=0 或 level='date' 但随后它只会返回完整的数据帧,而不会丢失任何内容。

有人知道这样做的好方法吗?

最佳答案

使用Index.get_level_values对于第一级的值,通过索引选择最后一个,并通过 DataFrame.xs 选择最后一个使用 drop_level 避免删除第一级:

df = df.xs(df.index.get_level_values(0)[-1], drop_level=False)
print (df)
close volume
date ticker
2017-01-10 AAPL 119.11 24462051.0
AMZN 795.90 2558369.0
MSFT 62.62 18593004.0
TSLA 229.87 3659955.0

另一个解决方案:

df = df.loc[[df.index[-1][0]], :]
print (df)
close volume
date ticker
2017-01-10 AAPL 119.11 24462051.0
AMZN 795.90 2558369.0
MSFT 62.62 18593004.0
TSLA 229.87 3659955.0

详细信息:

print (df.index[-1])
('2017-01-10', 'TSLA')

print (df.index[-1][0])
2017-01-10

关于python - 从多索引数据框中删除最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57039320/

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