比较2个csv文件数据时出现问题

2024-04-25 19:29:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个csv文件,我想比较和打印的行是不同的或不存在于fil2.csv

value data
a      67
b      654
c      87
d      789
e      23

文件2.csv

value data
a      67
b      654
c      87
d      7

期望输出

d      789
e      23

我尝试了这段代码,但它无法打印差异

reader1 = csv.reader(open(file1.csv, 'r'), delimiter=',', quotechar='"')
data = next(reader1)
reader2 = csv.reader(open(file2.csv, 'r'), delimiter=',', quotechar='"')
data2 = next(reader2)
if (data[0] != data2[0]) and (data[1] != data2[1]):
    print(data[0] , data[1])

Tags: 文件csv代码datavalue差异openreader
1条回答
网友
1楼 · 发布于 2024-04-25 19:29:02

您可以使用两个布尔掩码来完成此操作:

import pandas as pd

d1 = [{'value': 'a', 'data': 67},
 {'value': 'b', 'data': 654},
 {'value': 'c', 'data': 87},
 {'value': 'd', 'data': 789},
 {'value': 'e', 'data': 23}]

d2 = [{'value': 'a', 'data': 67},
 {'value': 'b', 'data': 654},
 {'value': 'c', 'data': 87},
 {'value': 'd', 'data': 7}]

df1 = pd.DataFrame(d1)
df2 = pd.DataFrame(d2)

print(df1)

  value  data
0     a    67
1     b   654
2     c    87
3     d   789
4     e    23

print(df2)

value  data
0     a    67
1     b   654
2     c    87
3     d     7

not_in = ~df1['value'].isin(df2['value'])

data_diff = df1[~not_in]['data'] != df2['data']

print(df1[not_in | data_diff])

  value  data
3     d   789
4     e    23

对于这个答案df1df2通过pd.read_csv()代替reader1reader2

相关问题 更多 >