gpt4 book ai didi

python - 如何访问多索引数据框的最后一个元素

转载 作者:太空宇宙 更新时间:2023-11-03 14:26:51 24 4
gpt4 key购买 nike

我有一个包含 ID 和时间戳的数据框作为多索引。数据框中的索引按 ID 和时间戳排序,我想为每个 ID 选择最新的时间戳。例如:

IDs    timestamp     value
0 2010-10-30 1
2010-11-30 2
1 2000-01-01 300
2007-01-01 33
2010-01-01 400
2 2000-01-01 11

所以基本上我想要的结果是

IDs    timestamp    value
0 2010-11-30 2
1 2010-01-01 400
2 2000-01-01 11

在 pandas 中执行此操作的命令是什么?

最佳答案

鉴于此设置:

import pandas as pd
import numpy as np
import io

content = io.BytesIO("""\
IDs timestamp value
0 2010-10-30 1
0 2010-11-30 2
1 2000-01-01 300
1 2007-01-01 33
1 2010-01-01 400
2 2000-01-01 11""")

df = pd.read_table(content, header=0, sep='\s+', parse_dates=[1])
df.set_index(['IDs', 'timestamp'], inplace=True)

使用 reset_index 后跟 groupby

df.reset_index(['timestamp'], inplace=True)
print(df.groupby(level=0).last())

产量

              timestamp  value
IDs
0 2010-11-30 00:00:00 2
1 2010-01-01 00:00:00 400
2 2000-01-01 00:00:00 11

然而,这并不是最好的解决方案。应该有一种方法可以在不调用 reset_index...

的情况下执行此操作

正如您在评论中指出的那样,last 忽略了 NaN 值。要不跳过 NaN 值,您可以像这样使用 groupby/agg:

df.reset_index(['timestamp'], inplace=True)
grouped = df.groupby(level=0)
print(grouped.agg(lambda x: x.iloc[-1]))

关于python - 如何访问多索引数据框的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145728/

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