我有两个CSV文件,即doctors.csv和clinics.csv,在clinics.csv中有cols Clinic_ID和Clinic_Name,然后我需要在Doctors.csv中添加新列以添加Clinic_ID,其中来自医生的Clinic_Name .csv与climates.csv中的Clinic_Name相匹配。
clinics.csv
Clinic_ID Clinic_Name
1 Clinic 1
2 Clinic 2
3 Clinic 3
4 Clinic 4
doctors.csv
Clinic_ID Clinic_Name
add ID Clinic 1
add ID Clinic 2
add ID Clinic 3
add ID Clinic 4
如果您能为我指明从这里出发的正确方向,因为我不确定这是否涉及根据诊所名称将df1映射到df2,然后根据此名称填充ID。
答案 0 :(得分:2)
尝试使用merge()
函数。
这是解决您问题的代码:
clinics = pd.DataFrame({'Clinic_ID': [1, 2, 3, 4], 'Clinic_Name':['Clinic 1','Clinic 2','Clinic 3','Clinic 4'] })
doctors = pd.DataFrame({'Clinic_Name': ['Clinic 1','Clinic 2','Clinic 3','Clinic 4']})
clinics_final=clinics.merge(doctors, on='Clinic_Name')
输出:
Clinic_ID Clinic_Name
0 1 Clinic 1
1 2 Clinic 2
2 3 Clinic 3
3 4 Clinic 4
您可以在pandas.DataFrame.merge上了解有关merge()
功能的更多信息
答案 1 :(得分:1)
尝试assign
print(df_doctor.assign(Clinic_ID=lambda x: [df_clinic['Clinic_ID'][key] for key, value in df_clinic['Clinic_Name'].items() if value == df_doctor['Clinic_Name'][key]]))
或者您可以直接分配,这更快。
df_doctor['Clinic_ID'] = [df_clinic['Clinic_ID'][key] for key, value in df_clinic['Clinic_Name'].items() if value == df_doctor['Clinic_Name'][key]]
print(df_doctor)
输出:
Clinic_Name Clinic_ID
0 Clinic 1 1
1 Clinic 2 2
2 Clinic 3 3
3 Clinic 4 4