Я только что прочитал и взволнован с волнением свыше этих недавно найденных функций оптимизации для моих Pandas
связанных потребностей.Согласно этой книге:
Метод DataFrame.eval () позволяет гораздо более краткую оценку выражений со столбцами:
result3 = df.eval('(A + B) / (C - 1)')
np.allclose(result1, result3)
True
К моему примеру:
Мой фрейм данных содержит около 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')