有这样一个数据框/时间序列(货币对):https ://dropmefiles.com/rQPKD
import pandas as pd
# чтение и подготовка данных
df = pd.read_csv('usdcad_H1_04_2023_support.csv', index_col=0, delimiter='\t', usecols=["time",'open', 'high', 'low', 'close'])
df.index = pd.to_datetime(df.index)
df_res = df.loc[df.index.to_series().between('2023-04-24 11:00:00', '2023-05-08 15:00:00')]
# далее/ниже хочу получить dataframe, где будут отфильтрованы значения 'close' выше определённого значения причем до первого неподходящего значения
# 1. проходит нормально для условия '< 1.35306'
df_new = df_res.groupby((df_res["close"] < 1.35306 ).cumsum()).get_group(0)
print(df_new)
# 2. не проходит для условия '< 1.35346' -------------------- вызывает ошибку key_error: 0 !!!
# по сути в dataframe есть значения 'close' выше '1.35346' , не понимаю логику ошибки
df_new = df_res.groupby((df_res["close"] < 1.35346 ).cumsum()).get_group(0)
print(df_new)
您可以通过钥匙进入该组。并且分组中的键不是序列号,而是分组发生的值。显然,您在选择中没有键为 0 的组,因为数据帧的第一个值满足条件
<1.35346,并且第一组的键将为 -1。如果显式展开分组,您始终可以检查组的键和内容: