【发布时间】:2020-04-22 11:41:05
【问题描述】:
我一直在尝试在 Pandas 中合并字符串;它们中的大多数都可以工作,但有些不匹配,尽管在 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')
我注意到,在去除空白之后,第一个数据集中的一些系列名称仍然有一个空格,而第二个数据集中的等价物似乎没有,因此这些名称的合并失败。例如,Stock ACommon 与 StockACommon。 dtypes 说对象。这些在 excel 文件中;尝试将列更改为 excel 中的文本,但没有任何区别。
【问题讨论】:
-
你发布的代码在
ra2['Security Name 2]之后定义了ra2['Security Name'] -
@SimonCrane 谢谢 - 已修复
-
Excel 文件的编码是什么?如果您从 excel 文件中剪切并粘贴“不同的空格字符”,将其粘贴到
str.replace()fct 中,行为是否有任何变化?我想知道您是否有空格,这不是空格,类似于我在 Excel 中看到的“全角括号”(单数),str.replace("("))正确地无法替换。 -
@Evan 因此,如果我将该字符作为新命令放入 str.replace() 中,则会在新输出中消除空格或字符。另外,如果我在 Excel 中检查字符串的等价性,它们是不等价的。但是,如果我在单元格中键入相同的确切单词,那么它们是等效的。
-
尝试使用正则表达式删除空格,
ra['Security Name'].str.replace('(\s+)','')
标签: python string pandas encoding merge