如何编写问题并将答案存储在 df 中以验证 python 中的公司名称匹配?
How can I write questions and store the answers in the df to validate the company name matches in python?
我正在完成将公司名称从一个不干净的数据集 (df_third) 匹配到干净的数据集 (df_gold) 的过程。对于一长串超过 200k 的公司,我在 df_third 中找到了最接近的匹配项,即
df_third
Name_Raw Group1
Aecom Tech AECOM
Aecom-Amentum AECOM
Aecom Govern Govern
我想问用户“确认 ['Name_Raw'] 是否应该分组到 ['Group1'] Y/N?
如果他们输入“Y”标记到新的[验证]列
如果他们输入“N”标记到新的[验证]列
然后询问下一行。
我考虑过使用 Name_Raw 作为索引(因为它们是唯一的)但找不到循环问题和捕获答案的方法。
此外,欢迎提出任何更好的处理方法。
这段代码应该会得到你想要的结果:
import pandas as pd
dd = {
'Name_Raw': ['Aecom Tech','Aecom-Amentum','Aecom Govern'],
'Group1':['AECOM','AECOM','Govern']
}
df = pd.DataFrame(dd)
df['Validate'] = ""
for idx,row in df.iterrows():
YN = "-"
while ((YN and YN.upper() in "YN") == False):
YN = input (f"Confirm if ['{row['Name_Raw']}'] should be grouped to ['{row['Group1']}'] Y/N ")
row['Validate'] = YN.upper()
print("\n", df.to_string(index=False))
输出
Confirm if ['Aecom Tech'] should be grouped to ['AECOM'] Y/N Y
Confirm if ['Aecom-Amentum'] should be grouped to ['AECOM'] Y/N N
Confirm if ['Aecom Govern'] should be grouped to ['Govern'] Y/N Y
Name_Raw Group1 Validate
Aecom Tech AECOM Y
Aecom-Amentum AECOM N
Aecom Govern Govern Y
我正在完成将公司名称从一个不干净的数据集 (df_third) 匹配到干净的数据集 (df_gold) 的过程。对于一长串超过 200k 的公司,我在 df_third 中找到了最接近的匹配项,即
df_third
Name_Raw Group1
Aecom Tech AECOM
Aecom-Amentum AECOM
Aecom Govern Govern
我想问用户“确认 ['Name_Raw'] 是否应该分组到 ['Group1'] Y/N?
如果他们输入“Y”标记到新的[验证]列
如果他们输入“N”标记到新的[验证]列
然后询问下一行。
我考虑过使用 Name_Raw 作为索引(因为它们是唯一的)但找不到循环问题和捕获答案的方法。
此外,欢迎提出任何更好的处理方法。
这段代码应该会得到你想要的结果:
import pandas as pd
dd = {
'Name_Raw': ['Aecom Tech','Aecom-Amentum','Aecom Govern'],
'Group1':['AECOM','AECOM','Govern']
}
df = pd.DataFrame(dd)
df['Validate'] = ""
for idx,row in df.iterrows():
YN = "-"
while ((YN and YN.upper() in "YN") == False):
YN = input (f"Confirm if ['{row['Name_Raw']}'] should be grouped to ['{row['Group1']}'] Y/N ")
row['Validate'] = YN.upper()
print("\n", df.to_string(index=False))
输出
Confirm if ['Aecom Tech'] should be grouped to ['AECOM'] Y/N Y
Confirm if ['Aecom-Amentum'] should be grouped to ['AECOM'] Y/N N
Confirm if ['Aecom Govern'] should be grouped to ['Govern'] Y/N Y
Name_Raw Group1 Validate
Aecom Tech AECOM Y
Aecom-Amentum AECOM N
Aecom Govern Govern Y