写一个python脚本,具体要求如下: 1、已有两个csv表格,第一行为标题行,第一列为文件 2、遍历表格1中的每一行,在表格2中找到具有相同文件名的所在行,对比两行表格中标题和内容都各自相同的列数,将文件名和列数结果输出到新表格中
时间: 2024-10-12 15:09:42 浏览: 29
你可以使用Python的pandas库来实现这个需求,pandas非常适合处理CSV文件,并提供了数据清洗和合并的功能。下面是一个简单的脚本示例:
```python
import pandas as pd
# 读取csv文件
def read_csv(file_name):
return pd.read_csv(file_name, header=0)
# 比较两行数据是否完全相同
def compare_rows(row1, row2):
return row1.equals(row2)
# 创建一个空DataFrame用于存储结果
result = pd.DataFrame(columns=['File', 'Matching Columns'])
# 表格1和2的文件路径
table1_path = "table1.csv"
table2_path = "table2.csv"
# 遍历table1
df1 = read_csv(table1_path)
for index, row in df1.iterrows():
file_name = row['File']
# 在table2中查找匹配的行
df2_temp = df1[df1['File'] == file_name]
if not df2_temp.empty:
df2 = read_csv(table2_path)
matched_rows = df2[df2['File'].isin(df2_temp['File'])].iloc[0] # 取出第一个匹配的行
# 检查标题是否完全相同
if compare_rows(row.drop('File'), matched_rows.drop('File')):
matching_columns = len(set(row.drop('File').columns) & set(matched_rows.drop('File').columns))
result = result.append({'File': file_name, 'Matching Columns': matching_columns}, ignore_index=True)
# 输出结果到新的CSV文件
result.to_csv("comparison_results.csv", index=False)
```
在这个脚本中,我们首先定义了几个辅助函数,如读取CSV、比较行数据和创建结果表。然后,我们遍历table1,找出每个文件对应的table2中的行,检查它们的标题和内容是否一致,最后将结果添加到`result` DataFrame中。
阅读全文