我有2个数据框,它们实际上来自固定字段文件,我需要找出哪些行是不同的。
>>> df1 = pd.DataFrame([('1', '2018/01', 389.0, 'U'),
('2', '2018/02', 24.0,'A'),
('3', '2017/01', 80.5,'U'),
('4', '2017/02', np.nan, 'R')],
columns=['sequence', 'key', 'field1','field2'],
)
>>> df2 = pd.DataFrame([('1', '2018/01', 389.0, 'U'),
('2', '2018/02', 24.0,'A'),
('3', '2018/03', 90.5,'T'),
('4', '2017/02', np.nan, 'R'),
('5','2017/01',80.5,'U')],
columns=['sequence', 'key', 'field1','field2'],
)
“序列”列无关紧要,可以删除,我需要在键列上进行匹配。
df3 = df1!= df2
如果它们的形状相同,则可以工作,但我得到: ValueError:只能比较标记相同的DataFrame对象
我尝试了合并,但这使我有更多的列
我想我想用较大的数据框“键”列重新索引较小的数据框,并用NaN填充它。
然后它们将是相同的形状,我可以将它们进行比较;
>>> new_index = df2.take([1],axis=1)
>>> new_index
key
0 2018/01
1 2018/02
2 2018/03
3 2017/02
4 2017/01
看起来不错,但
df3 = df1.reindex(new_index,1)
不正确
df3 = df1.reindex(new_index,['key'])
df3
key
(2018/01,) NaN
(2018/02,) NaN
(2018/03,) NaN
(2017/02,) NaN
(2017/01,) NaN
这也不是
答案 0 :(得分:2)
答案 1 :(得分:2)
使用datacompy
比较两个数据帧。
您可以使用pip install datacompy
进行安装以查找唯一的行。
import datacompy
d=datacompy.Compare(df1,df2,join_columns='key')
print(d.df2_unq_rows)
print(d.df1_unq_rows)
您还可以通过使用datacompy获得有关两个数据帧的许多其他统计信息。
查找有关数据复制here的更多信息。