Python 未来警告:元素级比较失败;而是返回标量,但将来将执行元素级比较

Python 未来警告:元素级比较失败;而是返回标量,但将来将执行元素级比较,python,pandas,numpy,csv,dataset,Python,Pandas,Numpy,Csv,Dataset,我一直在使用Football Transfers数据集,并试图打印具有特定列值的行。从代码的第11行和第12行可以看到,我已经成功地打印了转账费为22200000和其他值的行。但我似乎无法打印出市场价值不是“NaN”的行 将熊猫作为pd导入 将numpy作为np导入 pd.set\u选项('display.max\u columns',无) pd.set\u选项('display.max\u rows',无) data0='C:/Users/Siddhardh/Desktop/OiDS Proj

我一直在使用Football Transfers数据集,并试图打印具有特定列值的行。从代码的第11行和第12行可以看到,我已经成功地打印了转账费为22200000和其他值的行。但我似乎无法打印出市场价值不是“NaN”的行

将熊猫作为pd导入
将numpy作为np导入
pd.set\u选项('display.max\u columns',无)
pd.set\u选项('display.max\u rows',无)
data0='C:/Users/Siddhardh/Desktop/OiDS Project/Code/Transfers.csv'
数据=pd.read\u csv(数据0)
#打印(data.head())
#data1=data.loc[数据['Transfer_fee']==22200000]
#打印(data1.head())
如果(数据[‘市场价值’!=‘NaN’):
打印(data.head())
这就是我得到的错误

C:\Users\Siddhardh\Desktop\OiDS Project\Code\lib\site-packages\pandas\core\ops\__init__.py:1115: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  result = method(y)
Traceback (most recent call last):
  File "C:/Users/Siddhardh/Desktop/Python/Projects/OiDS_Transfers/Central_Code.py", line 14, in <module>
    if(data['Market_value'] != 'NaN'):
  File "C:\Users\Siddhardh\Desktop\OiDS Project\Code\lib\site-packages\pandas\core\generic.py", line 1555, in __nonzero__
    self.__class__.__name__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
C:\Users\Siddhardh\Desktop\OiDS Project\code\lib\site packages\pandas\core\ops\\uuuuu init\uuuu.py:1115:FutureWarning:elementwise比较失败;而是返回标量,但将来将执行元素级比较
结果=方法(y)
回溯(最近一次呼叫最后一次):
文件“C:/Users/Siddhardh/Desktop/Python/Projects/OiDS\u Transfers/Central\u Code.py”,第14行,在
如果(数据[‘市场价值’!=‘NaN’):
文件“C:\Users\Siddhardh\Desktop\OiDS Project\Code\lib\site packages\pandas\core\generic.py”,第1555行,非零__
self.\u类\u.\u名称__
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

代码中的问题是:

  • 分别计算每一行的结果(以便 结果是一个布尔值序列
  • 但实际上,您需要一个布尔标量(一个单数True 或单个错误)
要将此类布尔序列转换为单个值,请使用any() 或全部(),根据需要而定

另一个细节:市场价值,我想,是一个浮动列和 NaN只是非数字值的打印方式。 实际上,它是float类型的特殊值。 因此,将“NaN”作为字符串进行比较是错误的

还要注意,NaN不等于任何其他值,包括其他NaN。 要检查任何值是否为NaN,请使用isna()或notna() 功能

因此,总而言之,请改为运行:

if(data['Market_value'].notna().all()):
    print(data.head())