Python 合并熊猫数据帧中的字符串时出现问题-编码问题?

Python 合并熊猫数据帧中的字符串时出现问题-编码问题?,python,string,pandas,encoding,merge,Python,String,Pandas,Encoding,Merge,我一直在尝试在熊猫中合并字符串;它们中的大多数都能工作,但有些不匹配,尽管在excel文件中看起来完全相同 data looks like: File Name: company 1.pdf; Security Name: Series A Common File Name: company 2.pdf; Security Name: Series B Common ra1['File Name'] = ra1['File Name'].astype(str) ra1['Security Na

我一直在尝试在熊猫中合并字符串;它们中的大多数都能工作,但有些不匹配,尽管在excel文件中看起来完全相同

data looks like:
File Name: company 1.pdf; Security Name: Series A Common
File Name: company 2.pdf; Security Name: Series B Common

ra1['File Name'] = ra1['File Name'].astype(str)
ra1['Security Name'] = ra1['Security Name'].astype(str)

ra1['Security Name 2'] = ra1['Security Name'].str.replace(" ","")


ra2['File Name'] = ra2['File Name'].astype(str)
ra2['Security Name'] = ra2['Security Name'].astype(str)

ra2['Security Name 2'] = ra2['Security Name'].str.replace(" ","")

x = pd.merge(ra1,ra2,on=['File Name','Security Name 2'],how='left') 


我注意到,在去掉空白后,第一个数据集中的一些序列名仍然有一个空格,而第二个数据集中的等价项似乎没有,因此这些序列名的合并失败。例如StockACommon,vs StockACommon。数据类型表示对象。这些都在excel文件中;尝试在excel中将列更改为文本,但没有任何区别。

只是添加作为答案

为了匹配所有空格,例如
abc
,我们可以利用正则表达式

\s+
匹配任何空白字符(等于
[\r\n\t\f\v])
+
量词-在一次和无限次之间进行匹配,尽可能多地匹配,根据需要返回(贪婪) 正则表达式演示:


您发布的代码定义了
ra2['Security Name']
ra2['Security Name 2]
@SimonCrane谢谢-修复了Excel文件的编码是什么?如果将excel文件中的“不同空格字符”剪切并粘贴到
str.replace()
fct中,行为是否有任何变化?我想知道您是否有一个空格,这不是一个空格,类似于我在Excel中看到的“全宽括号”(单数),它
str.replace(“”)
正确地未能替换。@Evan因此,如果我将该字符作为新命令放入str.replace(),则新输出中会消除该空格或字符。此外,如果我在Excel中检查字符串之间的等价性,则它们是不等价的。但是,如果我在单元格中键入相同的确切单词,则它们是等效的。请尝试使用正则表达式删除空白,
ra['Security Name'].str.replace(“(\s+”,”)
ra['Security Name'] = ra['Security Name'].str.replace('(\s+)','')
out:
Security Name
abc