我正在尝试在称为“匹配?”的新列中的同一数据框中的两列中的字符串返回True或False。
问题是,.equals始终返回False,即使它应该为True。
我尝试过的事情 运行.dtypes会将这两列都显示为数据对象。 将两列都转换为字符串。 将两个数据帧都转换为字符串。
代码试图达到的目的和可能的线索
我的代码
# 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也正确匹配它们-我以为我会检查一下以防发疯!
感谢您的帮助!
答案 0 :(得分:0)
请尝试直接使用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'])
,则输出为布尔值False
。相反,如果执行df['col_1'] == df['col_2']
,则输出为以下熊猫系列:
0 True
1 True
2 True
3 False
4 False
dtype: bool
简要说明:
equals
函数用于将两个Series或Dataframe相互比较,以查看它们是否具有相同的形状和元素,并返回布尔值==
运算符比较两个Series中的每个元素,并返回一个新的布尔Series