https://imsanjams.medium.com/boost-your-dataframe-performance-with-memoization-in-pandas-b7fc38a42c7c