Допустим, у меня есть NumPy Array:
x = np.array([0, 1, 1, 3, 4, 0, 5, 2, 2, 1])
и Pandas DataFrame:
df = pd.DataFrame({'start': [2, 5, 1, 0, 0], 'stop': [6, 9, 4, 3, 2]})
# start stop
# 0 2 6
# 1 5 9
# 2 1 4
# 3 0 3
# 4 0 2
Столбцы start
и stop
соответствуют индексы запуска и остановки из массива NumPy x
. Итак, я хотел бы добавить третий столбец в DataFrame, который представляет последовательность (объект) из x
. Я могу выполнить sh, используя iterrows
:
df['sequence'] = [[] for _ in range(len(df))]
for idx, row in df.iterrows():
df.at[idx, 'sequence'] = x[row['start']:row['stop']]
# start stop sequence
# 0 2 6 [1, 3, 4, 0]
# 1 5 9 [0, 5, 2, 2]
# 2 1 4 [1, 1, 3]
# 3 0 3 [0, 1, 1]
# 4 0 2 [0, 1]
Однако для DataFrame с миллионами строк iterrows
становится нежелательным. Мне нужно быстрое решение, не требующее тонны памяти.