Home > Software design >  pandas: declare a pandas dataframe as a constant
pandas: declare a pandas dataframe as a constant

Time:05-14

I would like to declare my dataframe as constant, so no matter what operations are happening in a modeule it's values or column names do not change. I know that it is possible to define constant variables using slot =() like so,

class CONST(object):
    __slots__ = ()
    my_constant = 123

CONST = CONST()
CONST.my_constant = 345 # AttributeError: 'CONST' object attribute 'my_constant' is read-only

however when i try the same thing on pandas dataframe, it is not constant anymore.

import pandas as pd
df1 = pd.DataFrame({'text': ['the weather is good']})

class CONST(object):
    __slots__ = ()
    my_constant = pd.DataFrame({'text': ['the weather is good']})

CONST = CONST()
CONST.my_constant.columns =['message']

I receive no error this time saying that it is read_only. I also looked at this response here but got the same output that shows my pandas dataframe is not read-only.

CodePudding user response:

Your first solution is applicable only for immutable data, consider following example

class CONST(object):
    __slots__ = ()
    my_constant = {"x":1,"y":2,"z":3}

CONST = CONST()
CONST.my_constant.clear()
print(CONST.my_constant)

output

{}

so in order to get it working you would need immutable (frozen) version of DataFrame, see pandas Immutable DataFrame for possible solutions.

  • Related