python - Pandas df.equals 返回 False,即使字符串为 True
问题描述
我试图在名为“匹配?”的新列中为同一数据框中的两列中的字符串返回 True 或 False。
问题是,.equals 总是返回 False,即使它应该是 True。
我尝试 运行的事情 .dtypes 将两列都显示为数据对象。将两列都转换为字符串。将两个数据帧都转换为字符串。
守则试图实现的目标和可能的线索
- 提取网页标题中的第一个关键字(通过从列中的列表中提取“|”之前的第一个词 - 例如关键字| 网站品牌名称.com)。
- 从提取的关键字末尾删除 Any 空格。
- 将提取的关键字转换为标题大小写,以便可以匹配。
- 提取的关键字与关键字列表匹配,并在新列中返回 True / False。
我的代码
# Extract First Keyword from Page Title
one_kw_page_titles['page_title_kw'] = one_kw_page_titles['Title'].str.split('|').str[0]
# Remove trailing whitespace
one_kw_page_titles['page_title_kw']=one_kw_page_titles['page_title_kw'].str.strip()
# Converts the Keyword Column into Title Case for Matching
one_kw_page_titles['Keyword'] = one_kw_page_titles['Keyword'].str.title()
# Compares ['page_title_kw] with ['Keyword] & returns True / False in a new column called ['Match']
one_kw_page_titles['Match?'] = one_kw_page_titles['page_title_kw'].equals(one_kw_page_titles['Keyword'])
如果我不得不猜测这是因为从页面标题中提取的关键字的格式(尽管它应该是一个字符串)。Excel =Exact 也正确匹配它们 - 我想我会检查以防我发疯!
谢谢你的帮助!
解决方案
不要使用equals
,而是尝试直接使用==
运算符。
例子:
import pandas as pd
df = pd.DataFrame({
"col_1": ["a", "b", "c", "d", "c"],
"col_2": ["a", "b", "c", "", "e"]
})
如果现在我们执行df['col_1'].equals(df['col_2'])
输出 isa boolean False
。相反,如果我们执行df['col_1'] == df['col_2']
输出是以下熊猫系列:
0 True
1 True
2 True
3 False
4 False
dtype: bool
简要说明:
- 该
equals
函数用于比较两个 Series 或 Dataframe 以查看它们是否具有相同的形状和元素,并返回一个布尔值 ==
运算符比较两个系列中的每个元素,并返回一个新的布尔系列
推荐阅读
- c# - 有没有办法将 Service Fabric 服务和应用程序恢复到与备份时不同的集群配置
- python - 如何隔离列表中具有特定模式的随机字符串?
- python - VSCode:在调试控制台中显示函数的 Python 文档字符串
- gcc - 不同执行环境下程序的不同结果
- reactjs - 如何在单击下一步按钮时通过 API 调用在 ReactTable 中添加分页
- c - 为什么不是所有标准头文件都以 std 前缀开头?
- excel - 如果单元格包含特定文本,则如果它不包含特定文本,则将函数推送到右侧的单元格
- sql - 这个查询中如何使用sql count 求出每个人的职位控制号数?
- sql-server - 如何在 Microsoft SQL Server Management Studio 中建立不同类型的关系
- python - Python IF 语句链错误,我可以这样使用非布尔值吗?