У меня большой Pandas фрейм данных, 24'000'000 строк × 6 столбцов плюс индекс. Мне нужно прочитать целое число в столбце 1 (то есть = 1 или 2), а затем заставить значение в столбце 3 быть отрицательным, если столбец 1 = 1, или положительным, если = 2. Я использую следующий код в блокноте Jupyter:
for i in range(1000):
if df.iloc[i,1] == 1:
df.iloc[i,3] = abs(df.iloc[i,3])*(-1)
if df.iloc[i,1] == 2:
df.iloc[i,3] = abs(df.iloc[i,3])
Приведенный выше код занимает 2 минуты 30 секунд c для запуска только для 1000 строк. Для 24M строк потребуется 41 день!
Что-то не так. Код работает в Jupyter Notebook / Chrome / Windows на довольно высоком конце P C.
. Кадр данных Pandas создается с помощью pd.read_csv, а затем сортируется и индексируется следующим образом:
df.sort_values(by = "My_time_stamp", ascending=True,inplace = True)
df = df.reset_index(drop=True)
Создание и сортировка кадра данных занимает всего несколько секунд. У меня есть другие вычисления для этого кадра данных, поэтому я должен четко понимать, что я делаю неправильно.