Я только что прочитал и пускал слюни от волнения над этими недавно найденными функциями оптимизации. для моих Pandas
нужд. Согласно этой книге:
Метод DataFrame.eval() позволяет гораздо более лаконично вычислять выражения со столбцами:
result3 = df.eval('(A + B) / (C - 1)')
np.allclose(result1, result3)
Истинный
К моему примеру:
Мой фрейм данных содержит около 42000 записей и 28 столбцов. Два из которых Date
и Heure
являются строками.
Моя цель: объединить оба столбца в один. Что я легко могу сделать с помощью этого фрагмента кода: df_exade_light["Date"]+df_exade_light["Heure"]
, применяя к нему %timeit
, возвращает
6,07 мс ± 219 мкс на цикл (среднее значение ± стандартное отклонение для 7 запусков по 100 циклов в каждом)
Но по какой-то причине df.eval('Date + Heure')
возвращает:
RecursionError: превышена максимальная глубина рекурсии
Более того, я применяю решение, найденное в этой теме, чтобы увеличить допустимую глубину стека, но ядро просто вылетает.
В чем причина этого? Я делаю что-то неправильно?
Проблему можно воспроизвести с помощью этого кода:
import pandas as pd
df = pd.DataFrame({'A': ['X','Y'],
'B': ['U','V']})
df.eval('A+B')