我在数据框title
和store
中有两列包含文本字符串,我希望通过该列对数据框进行子集化:
In [84]:
2631 coffee‑mate sugar free french ... jet.com
2633 nestle coffeemate natural bliss ... jet.com
2634 coffee‑mate liquid coffee creamer, ... jet.com
3085 coffee‑mate hazelnut ... jet.com
当我尝试:
df[(df.title.str.contains('coffee-mate')) & (df.store.str.contains('jet.com'))]
我明白了:
Out[84]:
Empty DataFrame
Columns: [title, store]
Index: []
然而,当我这样做时:
df[(df.title.str.contains('coffee')) & (df.store.str.contains('jet.com'))]
我明白了:
2631 coffee‑mate sugar free french ... jet.com
2633 nestle coffeemate natural bliss ... jet.com
2634 coffee‑mate liquid coffee creamer, ... jet.com
3085 coffee‑mate hazelnut ... jet.com
我不知道该怎么做!
我尝试复制角色'咖啡伴侣'进行等效性测试并获得False
。
'coffee‑mate' == 'coffee-mate'
Out[92]: False
我觉得这与编码有关,但不知道如何检测和解决问题。有人可以帮忙吗?
答案 0 :(得分:11)
"咖啡伴侣"在您的数据框中使用不间断的连字符(u"\u2011"
),并且您的搜索字符串使用连字符
不打破 http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=%E2%80%91&mode=char
你的连字符 http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=-&mode=char
虽然它们和你我看起来一样,但Python认为它们是两个不同的角色。如果您将来遇到此问题,我只需将字符粘贴到此UTF8 tool中即可解决此问题 - 您明智地对coffee-mate
和coffee‑mate