The following function:
def func(x):
for k in x['slices']:
for j in k:
print(x['low'].iloc[j])
applied in the following manner works:
func(test)
but as follow doesn't:
test.apply(func, axis=1)
Would you be able to determine why?
EDIT: I used the print only for debug purpose: the function used to be :
def func(x):
result=[]
for k in x:
for j in k:
result.append(x['low'].iloc[j])
return result
which also didn't work
Below the elements to reconstructs the data.
df = pd.DataFrame(dict, columns=["low", "slices"])
dict = {'low': {0: 1207.25,
1: 1207.5,
2: 1205.75,
3: 1206.0,
4: 1201.0,
5: 1202.75,
6: 1203.75},
'slices': {0: [slice(1, 2, None)],
1: [slice(1, 3, None), slice(2, 3, None)],
2: [slice(1, 4, None), slice(2, 4, None), slice(3, 4, None)],
3: [slice(1, 5, None),
slice(2, 5, None),
slice(3, 5, None),
slice(4, 5, None)],
4: [slice(1, 6, None),
slice(2, 6, None),
slice(3, 6, None),
slice(4, 6, None),
slice(5, 6, None)],
5: [slice(1, 7, None),
slice(2, 7, None),
slice(3, 7, None),
slice(4, 7, None),
slice(5, 7, None),
slice(6, 7, None)],
6: [slice(1, 8, None),
slice(2, 8, None),
slice(3, 8, None),
slice(4, 8, None),
slice(5, 8, None),
slice(6, 8, None),
slice(7, 8, None)]}}

an integer is requiredandKeyError: ('slices', 'occurred at index slices'). Note that when usingfunc(test), it returns the correct output with no error message.Seriescontaining lists from the slices?1 1207.5 Name: low, dtype: float64 1 1207.50 2 1205.75 Name: low, dtype: float64 2 1205.75 Name: low, dtype: float64 1 1207.50 2 1205.75 3 1206.00 Name: low, dtype: float64 2 1205.75 3 1206.00 Name: low, dtype: float64 3 1206.0 Name: low, dtype: float64 1 1207.50 2 1205.75 3 1206.00 4 1201.00I didnt post it at first as it is quite long. Yes it is Series based on the slices.applydoes not work like so.printreturns None and the output you have is not validSeriesobject