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()开始,但失败了,然后我就回头看:-)