Pandas - Есть ли способ одновременно выполнять несколько операций в DataFrame? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть следующий код, который будет выполняться более 1,5 миллионов раз с различными запросами, которые динамически генерируются из файла конфигурации

Я не пытаюсь оптимизировать условия запроса, я пытаюсь посмотрим, могу ли я выполнить запрос один раз и получить тот же результат вместо того, чтобы выполнять запрос 3 раза в разных столбцах

csv_file_profit = pd.read_csv('C:\\Users\\test_data.csv')

if query_str:
    profit_sum = csv_file_profit.query(query_str)['P/L'].sum()
    trans_count = csv_file_profit.query(query_str)['Tran ID'].count()
    atr_profit_sum = csv_file_profit.query(query_str)['Max ATR Profit'].sum()

Есть ли более быстрый способ получить тот же результат?

1 Ответ

1 голос
/ 28 мая 2020

Одним из улучшений может быть вычисление отфильтрованного DataFrame один раз , а затем дальнейшее вычисление этого отфильтрованного результата. Что-то вроде:

if query_str:
    filtered = csv_file_profit.query(query_str)
    profit_sum = filtered['P/L'].sum()
    trans_count = filtered['Tran ID'].count()
    atr_profit_sum = filtered['Max ATR Profit'].sum()

Время выполнения составляет около 50% по сравнению с вашим кодом в очень ограниченном DataFrame (4 строки). Для большего DataFrame разница должна быть больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...