python csv进行join
时间: 2023-07-22 20:18:21 浏览: 107
python读取csv文件
在Python中,使用csv模块可以很方便地进行csv文件的读写和处理。如果要进行join操作,可以先读取需要join的两个csv文件,然后根据需要join的列进行匹配和合并。
以下是一个简单的例子:
假设有两个csv文件,一个是students.csv,包含学生的信息,如下所示:
```
id,name,age,gender
1,Jack,18,Male
2,Lucy,19,Female
3,John,20,Male
```
另一个是scores.csv,包含学生的成绩信息,如下所示:
```
id,course,score
1,Math,80
2,Math,90
3,English,85
```
现在需要将两个csv文件按照学生的id进行join操作,得到如下结果:
```
id,name,age,gender,course,score
1,Jack,18,Male,Math,80
2,Lucy,19,Female,Math,90
3,John,20,Male,English,85
```
可以使用Python的csv模块和字典来实现这个操作,代码如下:
```python
import csv
# 读取students.csv文件,存储到students字典中
students = {}
with open('students.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
students[row['id']] = row
# 读取scores.csv文件,将成绩信息合并到students字典中
with open('scores.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
student = students.get(row['id'])
if student:
student.update(row)
# 将合并后的结果写入新文件
fieldnames = ['id', 'name', 'age', 'gender', 'course', 'score']
with open('result.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
for student in students.values():
writer.writerow(student)
```
首先读取students.csv文件,将每个学生的信息存储到一个字典中。然后读取scores.csv文件,将成绩信息合并到字典中相应的学生信息中。最后将合并后的结果写入新文件result.csv中。注意,两个csv文件中的列名要保持一致,否则无法正确合并。
阅读全文