从 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()
我正在尝试通过按年份对具有日期时间索引的时间序列进行分组来恢复原始日期或索引。有没有没有循环和额外列的更快方法来获得 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()