pandas: 将 pandas 数据帧声明为常量

pandas: declare a pandas dataframe as a constant

我想将我的数据框声明为常量,因此无论模块中发生什么操作,它的值或列名都不会改变。我知道可以像这样使用 slot =() 来定义常量变量,

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

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

然而,当我在 pandas 数据帧上尝试同样的事情时,它不再是恒定的。

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']

这次我没有收到错误消息说它是 read_only。我还查看了此响应 here,但得到的输出相同,显示我的 pandas 数据帧不是只读的。

您的第一个解决方案仅适用于不可变数据,请考虑以下示例

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

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

输出

{}

因此,为了使其正常工作,您需要不可变(冻结)版本的 DataFrame,请参阅 pandas Immutable DataFrame 了解可能的解决方案。