Python 检查数据帧中是否存在序列

Python 检查数据帧中是否存在序列,python,pandas,dataframe,Python,Pandas,Dataframe,我需要检查一个系列是否已经作为一行存在于数据帧中。数据帧如下所示- Name Age University 0 Ankit NaN BHU 1 Aishwarya 21.0 JNU 2 Shaurya 22.0 DU 我试过了- (df == ser).all(1).any() 当dataframe和series没有空值时,它可以正常工作。例如,如果序列为['Aishwarya',21.

我需要检查一个系列是否已经作为一行存在于数据帧中。数据帧如下所示-

        Name   Age   University
0      Ankit   NaN          BHU
1  Aishwarya  21.0          JNU
2    Shaurya  22.0           DU
我试过了-

(df == ser).all(1).any()
当dataframe和series没有空值时,它可以正常工作。例如,如果序列为
['Aishwarya',21.0,'JNU']
,则输出为True,这是正确的。但是,如果序列为
['Ankit',np.nan,'BHU']
,则输出为,即使序列存在于数据帧中

我的问题的最小、可复制的示例-

details={'Name':['Ankit','Aishwarya','Shaurya'],'Age':[np.nan,21,22],'University':['BHU','JNU','DU']}
df=pd.DataFrame(详细信息,列=['Name','Age','University'])
ser1=pd.系列(['Ankit',np.nan',BHU',索引=['Name','Age','University']))
ser2=pd.Series(['Aishwarya',21.0,'JNU'],索引=['Name','Age','University'])
打印((ser1==df).all(1).any())
打印((ser2==df).all(1).any())
实际产量-

False
True
预期产量-

True
True

根据定义,
np.nan==np.nan
为假

尝试改用
df.isin()

df.isin([*ser1]).all(1).any()
True

根据定义,
np.nan==np.nan
为假

尝试改用
df.isin()

df.isin([*ser1]).all(1).any()
True
也找到了答案

print(ser1.astype(str).eq(df.astype(str)).all(1.any())#True
print(ser2.astype(str).eq(df.astype(str)).all(1.any())#True
也找到了答案

print(ser1.astype(str).eq(df.astype(str)).all(1.any())#True
print(ser2.astype(str).eq(df.astype(str)).all(1.any())#True

返回False。你好@Shradha,更改了它。我最初是用列表而不是系列进行测试。将该系列转换为列表已经可以解决此问题,返回False。Hi@Shradha,更改了它。我最初是用列表而不是系列进行测试。把这个系列变成一个列表已经奏效了