如何解决将数据帧解析为类而不复制内存中的数据帧
我有一个想要处理的 Pandas 数据框,最好是一个类。数据框很大。
# some data
symbol_1 = 10000
symbol_2 = 10001
df = pd.DataFrame("some large dataframe")
# create a class to process the data
class Calc_stats:
"statistics on the symbol """
def __init__(self,symbol,df):
''' initialise the class '''
self.symbol = symbol
self.df = df
# instantate class
stats_1 = Calc_stats(symbol_1,df)
stats_2 = Calc_stats(symbol_2,df)
所以我的问题是:我是否会为创建的类的每个实例复制内存中的(大)df?
即。代码是否留下了 3 个数据帧,df
、stats_1.df
和 stats_2.df
,还是只使用了一个 df,而其他两个实例指向第一个实例?
解决方法
您可以使用 id()
函数测试这些数据帧是否是内存中的同一个对象,或者通过创建两个对象、修改原始数据帧,然后检查这些对象的属性是否有这些变化。
如果您担心复制大数据结构或对象,您可以随时从类中删除该属性,而是创建处理从这些数据帧中提取相关数据的函数。
,正在测试中。我创建了一个示例数据帧,然后编辑了其中一个实例数据帧的元素,然后 print(df)
原始数据帧并验证它是否已更改。
这意味着只有一个数据帧(而不是 3 个相同的副本)。
@Yaels 的回答还指出可以使用 ID()
函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。