python - 检查数据框中是否存在系列
问题描述
我需要检查一个系列是否已经作为数据框中的一行存在。数据框如下 -
Name Age University
0 Ankit NaN BHU
1 Aishwarya 21.0 JNU
2 Shaurya 22.0 DU
我试过了-
(df == ser).all(1).any()
当数据框和系列没有空值时,它可以正常工作。例如,如果系列是['Aishwarya', 21.0, 'JNU']
,则输出为True,这是正确的。但是,如果系列为['Ankit', np.nan, 'BHU']
,则输出为False,即使该系列存在于数据框中。
我的问题的最小,可重复的例子 -
details = {'Name':['Ankit', 'Aishwarya', 'Shaurya'], 'Age':[np.nan, 21, 22], 'University':['BHU', 'JNU', 'DU']}
df = pd.DataFrame(details, columns = ['Name', 'Age', 'University'])
ser1 = pd.Series(['Ankit', np.nan, 'BHU'], index = ['Name', 'Age', 'University'])
ser2 = pd.Series(['Aishwarya', 21.0, 'JNU'], index = ['Name', 'Age', 'University'])
print((ser1 == df).all(1).any())
print((ser2 == df).all(1).any())
实际输出-
False
True
预期输出-
True
True
解决方案
根据定义np.nan == np.nan
为假
尝试df.isin()
改用:
df.isin([*ser1]).all(1).any()
True
推荐阅读
- python - 使用 periodindex 在具有多索引列的数据帧上进行 GroupBy
- windows - 按住 alt 键时如何防止 Windows 激活键提示?
- python - wx.KeyEvent 和非 QWERTY 键盘
- android - 引用泛型类型 T 的实例
- javascript - 不同对象的映射列表
- python - 当某些值是无数据类型时,如何编写一个函数来将列表列表中的值与额外条件进行比较
- erlang - 从地图创建多个进程
- android - Android Studio“找不到aapt2-windows.jar”错误
- git - 列出在 Git 存储库的某个分支中存在的文件夹的所有子文件夹
- dialogflow-es - Google 助理意图响应中的 SSML MalformedRequest 错误