我有多个数据帧要比较。我的问题是产品ID。其中一个设置如下:
(毛额)
我在这里看到了reddit、YouTube,甚至深入兔子洞尝试了。加入、.append,一些我以前从未见过,甚至还不了解的其他方法。是否有一种方法(或者更好的方法,我可以阅读一些文档来了解这一点)从主excel工作表中提取产品ID,并将其与应该匹配的产品ID进行比较。然后,我将更喜欢在所有的表中创建就地ID。这样我就可以使用这些ID作为索引,并将ID与行数据并排比较?每个ID大约有113个值要比较。这是113列,但如果这有意义的话,每行都有113列
补充说明: 突出显示的黄色ID是“唯一的”,我不会更改它们,而是将它们写入列表或其他内容,并使用if语句在找到它们时忽略它们
编辑: 所以我写了这段代码,这几乎是完美的,我需要这样做。 它去掉了我应用于所有ID的“-”。只需要列出一个唯一的ID列表,以便在删除零时跳过
dfSS["Product ID"] = dfSS["Product ID"].str.replace("-", "")
然后,除了唯一ID之外,这将只列出最多9位的数字
dfSS["Product ID"] = dfSS["Product ID"]str[:9]
我将在这里添加完整的代码,一旦我得到它的工作100%
我现在想知道怎么说这样的话
lst =[1,2,3,4,5]
if dfSS["Product ID"] not in lst:
dfSS["Product ID"] = dfSS["Product ID"].str.replace("-", "").str[:9]
这段代码不起作用,但每天我都越来越接近能够比较这些相似但不同的数据帧。lst只是列表中000-000-000产品ID的一个示例,我根本不想对其进行筛选。但请保留在数据框中
如果ID转换是可预测的,那么一个选项是使用正则表达式来均匀化ID。例如,如果情况只是删除前三位数字,则可以使用如下内容:
如果ID转换不可预测(例如,由于转录错误或数据中的某些其他噪声),那么最好的选择是首先使用类似
recordlinkage
的方法消除ID转换的歧义,请参见示例hereOk解决了每个产品ID是否有破折号、#、ltters等的问题
(\d\d\d-)-这是第一次&;第二个三个整数集,包含零个或多个匹配项和一个破折号(非贪婪)
[\u35;\ d-]?-这适用于任何特殊字符和附加数字(非贪婪)
[a-zA-Z]?-这个,不知道为什么,但我不得不从最后一部分中分离出来,因为它不能拾取每个字母。(非贪婪)
有了以上这些,我解决了所有我需要的问题
在那里我学会了如何提高我的再培训技能:
RE Documentation
Automate the Boring Stuff- Ch 7
You can test you RE's here
另一种方式来显示这一点。把这个放在这里,表明没有一种方法可以做到这一点。RE超级棒:
相关问题 更多 >
编程相关推荐