问题是有些标题有细微差别,有的有颜色差异,有的有空间,有些则没有类似的变化趋势。其余的细节是匹配的每一栏标题。
下面的例子
import pandas as pd
df = pd.DataFrame({
'title': ["Apple iPhone 12 Pro Max (256GB) - Gold",
"Apple iPhone 12 Pro Max (256GB) - Pacific Blue",
"boAt Bassheads 100 in Ear Wired Earphones with Mic(Black)",
"boAt Bassheads 100 in Ear Wired Earphones with Mic(Furious Red)",
"boAt Bassheads 100 in Ear Wired Earphones with Mic(White)",
"Redmi 9A Sport (Carbon Black, 3GB RAM, 32GB Storage) | 2GHz Octa-core Helio G25 Processor | 5000 mAh Battery",
"Redmi 9A Sport (Coral Green, 3GB RAM, 32GB Storage) | 2GHz Octa-core Helio G25 Processor | 5000 mAh Battery"
],
'List_Price':[129900, 129900, 299, 299, 299,8299,8299],
'Total_Ratings':[1536, 1536, 313053, 313053, 313053,155678,155678],
'Stars':[4.7, 4.7, 4.1, 4.1, 4.1,4.2,4.2]
})注:这只是一个例子,有很多的标题,有一个小的区别。
我想要这样的东西。输出:
与所有其他列记录一样。
发布于 2022-04-11 11:05:30
对此有不同的方法,因为您不想筛选的数据具有不同的属性。
一种天真但有效的方法是对特定字符进行拆分以删除某些文本。
另一种方法是使用regex删除括号内的任何内容。
在此之后,您只需丢弃重复的
下面是一个示例:
def function_1 (text, term):
try:
return text.split('{}'.format(term))[0].strip()
except:
return text
df['title'] = df.apply(lambda row: function_1(row['title'],'-'),1)
df['title'] = df.apply(lambda row: function_1(row['title'],'|'),1)
df['title'] = df.apply(lambda row: re.sub(r'\([^)]*\)', '', row['title']).strip(),1)
df = df.drop_duplicates()
df.head()

https://stackoverflow.com/questions/71826419
复制相似问题