Я использую Pandas groupby для анализа данных клиента, но не указан идентификатор клиента.Поэтому я должен сгруппировать имя клиента, но некоторые похожие имена клиентов на самом деле совпадают.Я хочу использовать функцию, которая может объединять одинаковые имена клиентов с одинаковыми первыми пятью символами, точно так же, но с изменением имени индекса, которое я впервые публикую, спасибо!
********* ОБНОВЛЕНИЕ ************* Я пытался сначала получить правильный список имен.и используйте метод dataframe.apply для исправления col ['FHRMC'], но мои данные - около 150 000+ строк и список имен - около 2500+, я запускаю этот сценарий без ошибок, а также часы работы без результата.часть моего кода ниже:
def groupData(path):
df = pd.read_csv(path,error_bad_lines=False)
list_raw_FHRMC =list(df.groupby(df['ZKFHRMC']),'ZKRKRQ0'].indices.keys())
deduped_list = deduped_FHRMC(list_raw_FHRMC)
**grouped_data.apply(correct_FHRMC,nameList=deduped_list,axis=1).groupby(df['ZKFHRMC'])['ZKJF001','ZKZZL00','ZKZLC00','ZKRKRQ0']**
что-то не так с этой строкой ↑
concated_data = concateValueF_and_A(grouped_data)
return concated_data
def deduped_FHRMC(nameList): # I want to use this func to get a namelist
for name in nameList:
if nameList.index(name) == len(nameList)-1:
break
if len(name) == 3 or len(name) == 2:
if len(name) == 3 and name[:3] == nameList[nameList.index(name)+1][:3]: #3个字的人名
nameList.pop(nameList.index(name)+1)
if name[:2] == nameList[nameList.index(name)+1][:2]: #2个字的人名
nameList.pop(nameList.index(name)+1)
else:
if name[:5] == nameList[nameList.index(name)+1][:5]: #5个字的发货人,通常会是公司名称
nameList.pop(nameList.index(name)+1)
return nameList
def correct_FHRMC(r,nameList): #更正发货人名称
for name in nameList:
if name[:5] in r['ZKFHRMC']:
r['ZKFHRMC'] = name
return r