<p>我无法告诉您原因,但是将两个数据帧与<code>==</code>进行比较似乎会触发此错误。您已经找到了一种迂回的方法来防止这种情况,<code>if globals()[x] is df</code>是关键部分<a href="https://docs.python.org/3.8/library/stdtypes.html#comparisons" rel="nofollow noreferrer">the ^{<cd3>} in particular</a></p>
<p>在不改变所有逻辑的情况下,进行这种改变就足够了:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
# initialize list of lists
data = [['tom', 10], ['nick', 15], ['juli', 14]]
# Create the pandas DataFrame
mydf = pd.DataFrame(data, columns = ['Name', 'Age'])
f = mydf
if(f is mydf or f is clinic):
print("yes it is ok ")
else:
print("no its not ok ")
</code></pre>
但是这只是一个创可贴解决方案;考虑这种修改:</P>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
# initialize list of lists
data = [['tom', 10], ['nick', 15], ['juli', 14]]
# Create the pandas DataFrame
mydf = pd.DataFrame(data, columns = ['Name', 'Age'])
mydf2 = pd.DataFrame(data, columns = ['Name', 'Age']) # a separate but equal dataframe
f = mydf2
if(f is mydf or f is clinic):
print("yes it is ok ")
else:
print("no its not ok ") # output: not its not ok
</code></pre>
<p>真正的解决办法是使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.equals.html" rel="nofollow noreferrer">^{<cd4>}</a>:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
# initialize list of lists
data = [['tom', 10], ['nick', 15], ['juli', 14]]
# Create the pandas DataFrame
mydf = pd.DataFrame(data, columns = ['Name', 'Age'])
mydf2 = pd.DataFrame(data, columns = ['Name', 'Age'])
f = mydf2
if(f.equals(mydf) or f.equals(clinic)):
print("yes it is ok ") # output: yes it is ok
else:
print("no its not ok ")
</code></pre>