Я пытаюсь применить функцию к DataFrame по строке (ось = 1), и когда примененная функция возвращает серию, окончательное возвращаемое значение 'apply' будет кадром данных, а не тем, что яхочу.Я нашел похожую проблему здесь, Возвращение нескольких значений из панд применяется к DataFrame , однако в данном случае речь идет о применении функции к групповому.и в случае не группы, будет возвращен фрейм данных, даже если возвращенная серия примененной функции имеет разную длину.
In [10]: import pandas as pd
In [11]: import numpy as np
In [12]: df = pd.DataFrame({'start': [1, 2, 3], 'end': [7, 9, 9]})
In [13]: df
Out[13]:
end start
0 7 1
1 9 2
2 9 3
In [14]: def fun(df):
...: return pd.Series(np.arange(df['start'], df['end'], 1))
...:
In [15]: df.apply(fun, axis=1)
Out[15]:
0 1 2 3 4 5 6
0 1.0 2.0 3.0 4.0 5.0 6.0 NaN
1 2.0 3.0 4.0 5.0 6.0 7.0 8.0
2 3.0 4.0 5.0 6.0 7.0 8.0 NaN
однако, что я хочу, это что-то вроде этого (иерархическая серия):
Out[23]:
0 0 1.0
1 2.0
2 3.0
3 4.0
4 5.0
5 6.0
1 0 2.0
1 3.0
2 4.0
3 5.0
4 6.0
5 7.0
6 8.0
2 0 3.0
1 4.0
2 5.0
3 6.0
4 7.0
5 8.0
dtype: float64