Какой эффективный способ итерации в python? - PullRequest
0 голосов
/ 06 апреля 2020

Я должен перебрать одну за другой более 1 миллиона записей, которые хранятся в списке. И его значение присутствует в Pandas кадре данных. Сначала я должен найти его значение в кадре данных, а затем выполнить на нем некоторую операцию при артрите c. И снова сохраните его в другом Pandas фрейме данных. Но это занимает слишком много времени, чтобы завершить. Поэтому я сохранил значение в кортеже, и производительность немного улучшилась, но не так, как ожидалось. Есть ли способ оптимизировать это? Ниже приведен пример кода, который я сделал.

c2=['Fruits','animals',...]
list1=[]
for j in c2:
        data2=dataframe.loc[(dataframe['value'] == j)]
        data3=data2.describe()
        range1=data3.loc['max']-data3.loc['min']

1 Ответ

0 голосов
/ 07 апреля 2020

Наиболее эффективным способом является использование векторизованных функций. Набрав это в шторке:

c2 = ['Fruits', 'animals', ...]
tmp = dataframe[dataframe['value'].isin(c2)] \
        .groupby('value') \
        .agg(['min', 'max'])

df_range = tmp['max'] - tmp['min']
...