由于使用 pandas 在 python 中使用长破折号/连字符,从 excel 读取时数据过滤器失败

Data filter failing when reading from excel due to em-dashes / hypen in python using pandas

我正在尝试读取 excel 文件,然后在列过滤器中打印具有特定值的结果。但是结果失败了em-dashes/hyphens。如果我选择任何其他列过滤器值,它会起作用。请帮助使这个查询工作。 Excel 文件的日期在下方以查看数据和过滤列 'category'。它看起来像破折号。一旦你打开我的 excel 你就可以清楚地看到。

Excel 文件 test.xlsx 内容过滤器基于列 'Category'

Name Age Category
Tom 15 cata
Joseph 21 catb
Krish 22 cata
John 32 Cat – AB
import pandas as pd
from pathlib import Path
DATA_DIR = Path.cwd() / r'E:'
excelA = DATA_DIR / 'Test.xlsx'

df = pd.read_excel(excelA)

values1 = df1

# Seem em dash below code fails but replace catg = ['cata'] them code works
catg = ['Cat – AB']



df_new = df[df['Category'].isin(catg)]

print(df_new) 

您可以尝试将em-dash换成破折号,这样更容易比较。

def func(word):
    return word.replace(chr(8211), chr(45))

df['Category'] = df['Category'].apply(func)

这里 8211 是 em-dash 的 ASCII 表示,45 是 dash。

df[df['Category'] == 'Cat - AB']

   Name  Age  Category
3  John   32  Cat - AB