df.index.get_indexer(target) 用于获取 target 中每个元素在 DataFrame 索引中的位置。如果元素不在索引中,返回 -1。
# -*- coding: utf-8 -*-
# @Author : 小红牛
# 微信公众号:WdPython
import pandas as pd
# 创建示例 DataFrame
data = {
"A": [10, 20, 30, 40],
"B": ["x", "y", "z", "w"]
}
index = pd.to_datetime(["2023-01-01", "2023-01-02", "2023-01-04", "2023-01-05"])
df = pd.DataFrame(data, index=index)
print("原始 DataFrame:")
print(df)
# 目标索引(包含存在的和不存在的日期)
target_dates = [
"2023-01-01", # 存在
"2023-01-03", # 不存在
"2023-01-05" # 存在
]
# 使用 get_indexer 查找位置
positions = df.index.get_indexer(target_dates)
print("\n目标日期在原始索引中的位置:")
print(positions)
输出内容
原始 DataFrame:
A B
2023-01-01 10 x
2023-01-02 20 y
2023-01-04 30 z
2023-01-05 40 w
目标日期在原始索引中的位置:
[ 0 -1 3]
0: “2023-01-01” 是索引的第 0 个位置。
-1: “2023-01-03” 不在索引中。
3: “2023-01-05” 是索引的第 3 个位置。
通过 method 参数指定如何处理缺失值:
# 找到最近的索引位置(向前填充)
positions_nearest = df.index.get_indexer(
target_dates,
method="nearest"
)
print("\n使用 method='nearest' 的位置:")
print(positions_nearest)
输出
使用 method='nearest' 的位置:
[0 2 3]
“2023-01-03” 的最近索引是 “2023-01-02”(索引 1)或 “2023-01-04”(索引 2),取决于具体实现。
完毕!!感谢您的收看
----------★★跳转到历史博文集合★★----------