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 了解可能的解决方案。
我想将我的数据框声明为常量,因此无论模块中发生什么操作,它的值或列名都不会改变。我知道可以像这样使用 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 了解可能的解决方案。