如何用python把一个csv文件和另一个中特定列比较,相同保留,不相同的删除
时间: 2024-04-16 19:28:03 浏览: 121
要使用 Python 将一个 CSV 文件中特定列与另一个 CSV 文件中相同的内容保留,而删除不同的内容,可以按照以下步骤操作:
1. 读取两个 CSV 文件:使用 Python 的 CSV 模块(csv)来读取两个 CSV 文件的内容,并将它们存储在列表或字典中。
```python
import csv
# 读取第一个 CSV 文件
data1 = []
with open('file1.csv', 'r') as file1:
reader = csv.DictReader(file1)
for row in reader:
data1.append(row)
# 读取第二个 CSV 文件
data2 = []
with open('file2.csv', 'r') as file2:
reader = csv.DictReader(file2)
for row in reader:
data2.append(row)
```
确保将 `'file1.csv'` 和 `'file2.csv'` 替换为实际的文件路径。
2. 比较两个数据集:使用循环遍历其中一个数据集,并检查特定列的值是否存在于另一个数据集中。如果存在,则保留该行;如果不存在,则删除该行。
```python
# 比较两个数据集并保留相同的内容
result = []
for row in data1:
for compare_row in data2:
if row['特定列名'] == compare_row['特定列名']:
result.append(row)
break
```
确保将 `'特定列名'` 替换为你要比较的实际列名。
3. 将结果写入新的 CSV 文件:使用 csv.DictWriter 将结果列表写入一个新的 CSV 文件。
```python
# 将结果写入新的 CSV 文件
fieldnames = data1[0].keys() # 获取字段名
with open('result.csv', 'w', newline='') as result_file:
writer = csv.DictWriter(result_file, fieldnames=fieldnames)
writer.writeheader() # 写入字段名
writer.writerows(result)
```
确保将 `'result.csv'` 替换为你希望保存结果的文件路径。
这样,你将得到一个包含两个 CSV 文件中特定列相同内容的新文件。请注意,这种方法假设你要比较的是特定列的值而不是整个行。如果你还想比较其他列,请相应地修改代码。
阅读全文