熊猫df.equals返回False,即使字符串为True

时间:2020-10-27 08:42:14

标签: python pandas

我正在尝试在称为“匹配?”的新列中的同一数据框中的两列中的字符串返回True或False。

问题是,.equals始终返回False,即使它应该为True。

我尝试过的事情 运行.dtypes会将这两列都显示为数据对象。 将两列都转换为字符串。 将两个数据帧都转换为字符串。

代码试图达到的目的和可能的线索

  1. 提取网页标题中的第一个关键字(方法是从列中的列表中提取“ |”之前的第一个单词-例如关键字 |网站品牌Name.com)。
  2. 从提取的关键字的末尾删除所有空白。
  3. 将提取的关键字转换为“标题”大小写以便可以匹配。
  4. 提取的关键字与关键字列表匹配,并在新列中返回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也正确匹配它们-我以为我会检查一下以防发疯!

感谢您的帮助!

1 个答案:

答案 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