Python如何从不同的文件在CSV文件中添加列?

Python如何从不同的文件在CSV文件中添加列?,python,pandas,csv,Python,Pandas,Csv,我有4个CSV文件。 我可以合并所有4个,但有一个问题 这是一个名为services.csv的文件 ServiceID Service 1 General Practitioner 2 Pathology 3 Radiology 4 Psychiatry 5 Chiropratic 还有另一个文件(“我把它命名为test.csv”) 现在,我必须根据测试文件中的ServiceID从Service.csv文件中添加服务列 我可以合并所有文件,但我不知道如何执行上述操作 T

我有4个CSV文件。 我可以合并所有4个,但有一个问题

这是一个名为services.csv的文件

ServiceID   Service
1   General Practitioner
2   Pathology
3   Radiology
4   Psychiatry
5   Chiropratic
还有另一个文件(“我把它命名为test.csv”)

现在,我必须根据测试文件中的ServiceID从Service.csv文件中添加服务列

我可以合并所有文件,但我不知道如何执行上述操作

Things that I Have to achieve:
1) Add Service column into the test.csv file
2) make the entries in the Service Column using the Service.csv file data.
谁能帮帮我吗。我不知道如何解决这个问题。

我认为需要在
ServiceID
之后添加
DataFrame
s和新列:

df1 = pd.read_csv('services.csv') 
df2 = pd.read_csv('test.csv')

#get position of ServiceID column
pos = df2.columns.get_loc('ServiceID') + 1

df2.insert(pos, 'Service', df2['ServiceID'].map(df1.set_index('ServiceID')['Service']))
print (df2)
   ClinicServiceID  ClinicID  ServiceID               Service  \
0                1         1          1  General Practitioner   
1                2         1          2             Pathology   
2                3         2          1  General Practitioner   
3                4         2          2             Pathology   
4                5         2          3             Radiology   

                   Name      Suburb State  Postcode  \
0     Hurstville Clinic  Hurstville   NSW      1493   
1     Hurstville Clinic  Hurstville   NSW      1493   
2  Sydney Centre Clinic      Sydney   NSW      2000   
3  Sydney Centre Clinic      Sydney   NSW      2000   
4  Sydney Centre Clinic      Sydney   NSW      2000   

                        Email        Lat         Lon  
0  hurstville@myclinic.com.au -33.975869  151.088939  
1  hurstville@myclinic.com.au -33.975869  151.088939  
2      sydney@myclinic.com.au -33.867139  151.207114  
3      sydney@myclinic.com.au -33.867139  151.207114  
4      sydney@myclinic.com.au -33.867139  151.207114  

谢谢你的帮助。但我需要一个又一个的服务栏,还有一个额外的栏。它起作用了,谢谢。index=false会删除额外的列吗?@Damian-是的,如果考虑
df.to_csv(file,index=false)
Hi@jezrael,在这种情况下,我们将获得
索引器
,可以吗explain@pyd-谢谢你的评论。我测试了它,发现
min
不是必需的,因为
pos=df2.columns.get_loc('Lon')+1
工作正常-在最后一列之后添加。
df1 = pd.read_csv('services.csv') 
df2 = pd.read_csv('test.csv')

#get position of ServiceID column
pos = df2.columns.get_loc('ServiceID') + 1

df2.insert(pos, 'Service', df2['ServiceID'].map(df1.set_index('ServiceID')['Service']))
print (df2)
   ClinicServiceID  ClinicID  ServiceID               Service  \
0                1         1          1  General Practitioner   
1                2         1          2             Pathology   
2                3         2          1  General Practitioner   
3                4         2          2             Pathology   
4                5         2          3             Radiology   

                   Name      Suburb State  Postcode  \
0     Hurstville Clinic  Hurstville   NSW      1493   
1     Hurstville Clinic  Hurstville   NSW      1493   
2  Sydney Centre Clinic      Sydney   NSW      2000   
3  Sydney Centre Clinic      Sydney   NSW      2000   
4  Sydney Centre Clinic      Sydney   NSW      2000   

                        Email        Lat         Lon  
0  hurstville@myclinic.com.au -33.975869  151.088939  
1  hurstville@myclinic.com.au -33.975869  151.088939  
2      sydney@myclinic.com.au -33.867139  151.207114  
3      sydney@myclinic.com.au -33.867139  151.207114  
4      sydney@myclinic.com.au -33.867139  151.207114