【发布时间】:2021-02-26 16:34:16
【问题描述】:
在这个例子中,r1 和 r2 指的是同一个对象,但assert(not r1 is r2) 返回 false,因为它们的 id 不同。但是,我希望它会失败,因为 r1 和 r2 指的是同一个对象!
import pandas as pd
df = pd.DataFrame([0])
r1 = df.iloc[0]
r2 = df.iloc[0]
assert(not r1 is r2)
r1[0] = 1
assert(r1.equals(r2))
print(id(r1), id(r2))
>> 140547055257416 140547055258032
可以在array slicing in numpy 中找到关于为什么会发生这种情况的解释
【问题讨论】:
-
使用“.copy()”。至于为什么看stackoverflow.com/questions/27673231/…
-
我想你误解了我的问题。我已经改写了。
-
对不起,这将回答您的问题。 stackoverflow.com/questions/47972633/…
-
一个有趣的阅读,但它没有告诉我如何检查两个变量是否引用同一个熊猫对象。
-
您可以称其为错误,但您是否想要一个 dict 保存您所做的每个 iloc 操作以便得到相同的 ID?