Учитывая порядок ваших DataFrame
, вы можете найти, где группа меняется, и использовать np.split
, чтобы создать новый DataFrame
.
import numpy as np
import pandas as pd
splits = dftemp[(dftemp.a != dftemp.a.shift())].index.values
df = pd.DataFrame(np.split(dftemp.b.values, splits[1:])).add_prefix('b').fillna(np.NaN)
df['a'] = dftemp.loc[splits, 'a'].values
Выход
b0 b1 b2 a
0 a a b 1
1 c d e 2
2 f NaN NaN 3