У меня есть два фрейма данных, ret
и bins
. Я хотел бы взять значения индекса из bins
, создать диапазон для каждой строки в bins
, а затем использовать этот список диапазонов для выбора данных из ret
. Каким-то образом это работает, когда я передаю индекс срезов (введенный вручную), но не работает, когда я передаю список, сохраненный в переменной a
ret = pd.DataFrame({'px': [.1, -.15, .30, -.20, .05]})
bins = pd.DataFrame({'t1': [3,4]}, index=[1,2])
a = []
for i, b in bins.iterrows():
a.append(slice(i, b.t1))
print('a',a)
print('np.r_[a]',np.r_[a])
print('np.r[slice',np.r_[slice(1, 3, None) , slice(1, 4, None)])
print(ret.iloc[np.r_[slice(1, 3, None) , slice(1, 4, None)]]) # this WORKS
print(ret.iloc[a] #this DOES NOT WORK)
, здесь вывод:
a [slice(1, 3, None), slice(2, 4, None)]
np.r_[a] [slice(1, 3, None) slice(2, 4, None)]
np.r[slice [1 2 1 2 3]
px
1 -0.15
2 0.30
1 -0.15
2 0.30
3 -0.20
...
TypeError: int() argument must be a string, a bytes-like object or a number, not 'slice'