从 pandas groupby first/last 获取索引值

Get index value from pandas groupby first/last

我正在尝试通过按年份对具有日期时间索引的时间序列进行分组来恢复原始日期或索引。有没有没有循环和额外列的更快方法来获得 first_day_indices

import pandas as pd
import numpy as np
import datetime as dt

# Data
T = 1000
base = dt.date.today()
date_list = [base - dt.timedelta(weeks=x) for x in range(T)]
date_list.reverse()
test_data = pd.DataFrame(np.random.randn(T)/100, columns=['Col1'])
test_data.index = pd.to_datetime(date_list)
test_data['date'] = test_data.index

first_days = test_data['date'].groupby(test_data.index.year).first()

first_day_indices= []

for i in first_days:
    first_day_indices.append(np.where(test_data.index == i)[0][0])

print(first_day_indices)

您可以使用 pandas.Series.isin 来检查 Series 中的元素是否包含在值列表中。

test_data.reset_index()[test_data.index.isin(first_days)].index.tolist()