#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 /…