gpt4 book ai didi

python - 将日期时间索引值转换为索引号

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:20 25 4
gpt4 key购买 nike

如果我有一个具有日期时间索引的数据框,并且我通过使用 series.first_valid_index 获得了第一个有效索引 - 它返回第一个非 nan 的日期时间,这正是我正在寻找的:

有没有办法获取日期时间值对应的索引号。例如,它返回 2018-07-16 但我想知道那是数据框的第 18 行吗?

如果不是,有没有办法计算从数据帧开头到该索引值的行数?

最佳答案

TLDR:如果您正在寻求一种将给定索引值(在本例中为 DatetimeIndex)映射到其整数的方法等效地,您要求 get_loc,如果您只想从系列中找到整数索引,请将 argmax 与底层 numpy 数组一起使用。

设置

np.random.seed(3483203)

df = pd.DataFrame(
np.random.choice([0, np.nan], 5),
index=pd.date_range(start='2018-01-01', freq='1D', periods=5)
)

              0
2018-01-01 NaN
2018-01-02 NaN
2018-01-03 0.0
2018-01-04 NaN
2018-01-05 NaN

使用pandas.Index.get_loc在这里,这是一个为给定标签返回整数索引的通用函数:

>>> idx = df[0].first_valid_index()
>>> idx
Timestamp('2018-01-03 00:00:00', freq='D')
>>> df.index.get_loc(idx)
2

如果你想完全避免找到 datetime 索引,你可以在底层 numpy 数组上使用 argmax:

>>> np.argmax(~np.isnan(df[0].values))
2

关于python - 将日期时间索引值转换为索引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52542408/

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