由于使用 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
我正在尝试读取 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