ValueError:GeoDataFrame的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()

2024-09-21 01:15:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有DataFrame,我想做,这似乎是一个简单的步骤

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 == mydf or f == clinic):
    
    print("yes it is ok ")
else:
    print("no its not ok ")

为什么这个小程序会出现以下错误

ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()


Tags: ofimportdataframepandasdataas步骤ok
2条回答

以下不是解决此问题的最佳方案,但可以作为解决此问题的备选方案:

# Get the name of a DataFrame 
def get_df_name(df):
    name =[x for x in globals() if globals()[x] is df][0]
    return name
f = doctors  ##  GeoDataFrame
f = get_df_name(f)

if(f == "doctors" or f == "clinic"):
    
    print("yes it is ok ")
else:
    print("no its not ok ")

输出:可以

我无法告诉您原因,但是将两个数据帧与==进行比较似乎会触发此错误。您已经找到了一种迂回的方法来防止这种情况,if globals()[x] is df是关键部分the ^{} in particular

在不改变所有逻辑的情况下,进行这种改变就足够了:

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 ")
但是这只是一个创可贴解决方案;考虑这种修改:

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

真正的解决办法是使用^{}

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 ")

相关问题 更多 >

    热门问题