Python 是否转换ID相同而名称不同的名称?
我正在尝试清理出现以下情况的名称值Python 是否转换ID相同而名称不同的名称?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在尝试清理出现以下情况的名称值 ID name 1 1 Company 2 1 Company, LLC 我想将其正常化,因此我只有一个这样的名称: ID name 1 1 Company 2 1 Company 例如: df.loc[df.name == 'Company, LLC', 'name'] = 'Company' 可以重复使用相同的方法重新映射值序列。如所述,如果您想识别更多潜在的匹配项,可以
ID name
1 1 Company
2 1 Company, LLC
我想将其正常化,因此我只有一个这样的名称:
ID name
1 1 Company
2 1 Company
例如:
df.loc[df.name == 'Company, LLC', 'name'] = 'Company'
可以重复使用相同的方法重新映射值序列。如所述,如果您想识别更多潜在的匹配项,可以帮助您找到可能相同的字符串。这将保留每个组的第一个元素,并沿数据帧的整个大小广播它:
df
Out[22]:
ID name
0 1 Company
1 1 Company,LLC
2 2 Companybbb
3 2 Company,LLC
4 3 Companyccc
5 3 Company,LLC
df.groupby('ID')['name'].transform('first')
Out[21]:
0 Company
1 Company
2 Companybbb
3 Companybbb
4 Companyccc
5 Companyccc
Name: name, dtype: object
看看fuzzyfuzzy。你的相框有多大?是否有可能有一个干净的列表和“硬编码”的值,你需要改变吗?嘿,它不是太大,大约300个值需要改变。有可能用听写器来做这件事吗?其中键是ID,值是正确的公司名称?这当然可以通过字典实现。这将是大量的前期手动工作,但在这之后,您只需根据
ID
列使用字典更改Name
列即可。如果您的数据变化不大,这可能是一个很好的解决方案。然而,如果你有了新的名字,那么保持一本字典将是一个时间的消耗。如果你需要一个更“永久”的解决方案,FuzzyWuzzy(或类似的东西)可能是你可以去的地方。你可以通过使用.transform('first')
@JonClements来避免这里的lambda。谢谢你的提醒,总是从x.first()开始,但失败了,然后我就回头看:-)