Pandas: операции над строками с учетом предыдущей строки в фрейме данных

#pandas #performance #dataframe

#pandas #Производительность #фрейм данных

Вопрос:

У меня есть большой фрейм данных (100 столбцов х 200 000 строк). Я хочу последовательно просмотреть фрейм данных и обновить содержимое строки N в зависимости от содержимого строки N-1. В настоящее время я действую следующим образом (условия на самом деле немного сложнее, и я применяю одну и ту же логику примерно 10 раз для каждой строки в разных группах столбцов):

 for index in df.index:
                   if df['A'][index] < df['B'][index] and df['C'][index-1] == 0:
                        df['D'][index] = df['A'][index]
                        df['E'][index] = df['F'][index-1]
 

  

Я хотел бы знать, есть ли способ сделать это быстрее. Должен ли я использовать другие объекты, кроме фреймов данных, такие как numpy objects?
Я предполагаю, что есть лучший способ сделать это, потому что такие функции, как «rolling», выполняют ту же логику и выполняются менее чем за 1 секунду для всего фрейма данных.

Спасибо за вашу помощь, ребята!

Комментарии:

1. Вы можете проверить .shift() функцию в pandas. Это помогает сравнивать с другими строками

2. Является ли pandas оптимальным при таких размерах? Рассматривали ли вы Spark в качестве альтернативы, например? Там вы могли бы использовать функцию окна lag : jaceklaskowski.gitbooks.io/mastering-spark-sql/content /…