微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据特定列找出两个python数据框的差异

如何解决根据特定列找出两个python数据框的差异

我想比较基于S/NMetric列的数据帧,以查找从df2中的最新值更改的值:

df1
#    S/N   Age  Metric
# 0  001  2.59    1.01
# 1  002  3.57    2.42
# 2  003  3.99    3.12


df2
#    S/N   Age  Metric
# 0  001  2.46    4.29
# 1  001  2.50    2.46
# 2  001  2.54    2.47
# 3  002  1.78    1.24
# 4  002  1.82    2.42
# 5  003  3.57    1.91
# 6  003  3.61    2.47
# 7  003  3.65    1.24

我正在寻找以下数据框:

   S/N   Age  Metric
0  001  2.59    1.01
2  003  3.99    3.12

数据

df1 = pd.DataFrame({
    "S/N": ['001','002','003'],"Age": [2.59,3.57,3.99],"Metric": [1.01,2.42,3.12]
})

df2 = pd.DataFrame({
    "S/N": ['001','001','003',"Age": [2.46,2.50,2.54,1.78,1.82,3.61,3.65],"Metric": [4.29,2.46,2.47,1.24,1.91,1.24]
})

解决方法

这里大约涉及两个步骤。首先,您需要比较df1df2,然后基于该比较来过滤数据。

第1步:比较

要根据列df1df2Metric进行比较,请运行:

df1['Metric'] != df2['Metric']
0    True
1    False   
2    True
3    False

第2步:过滤

在pandas中,可以使用仅包含TrueFalse值的pandas系列(“单列数据框”)过滤行:

inds = df1['Metric'] != df2['Metric']
df2.loc[inds,:]
     S/N   Age  Metric
# 0  001  2.46    4.29
# 2  003  2.00    2.47

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。