我有一个包含名为 A、B 和 C 的三列的 DF。我的目标是查看 groupby 是否存储 DF 的副本。我的测试代码片段如下:
# Make Df with columns A, B, C.
grp = df.groupby(by=['A', 'B'])
del df
print(grp.transform(lambda x: x)) # This line outputs the whole DF.
上面的代码片段似乎表明
grp
包含DF,因为原始DF已被删除,而grp
仍然可以产生它。这个结论是真的吗?
可能是
grp
维护了一个指向 DF 的指针,并且在 del
操作之后,引用计数不会变为零,因此数据会挂在内存中供 grp
使用。这是真的吗?
我的 Pandas 是 V 2.2.2。预先感谢您的澄清。
原始
df
存储在 groupby.obj
:
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.rand(3, 3), columns=['A', 'B', 'C'])
grp = df.groupby(by=['A', 'B'])
输出:
grp.obj
A B C
0 0.548814 0.715189 0.602763
1 0.544883 0.423655 0.645894
2 0.437587 0.891773 0.963663
平等检查:
grp.obj.equals(df)
# True