根据特定列查找两个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','001', '002','002', '003', '003', '003'],
"Age": [2.46, 2.50, 2.54, 1.78, 1.82, 3.57, 3.61, 3.65],
"Metric": [4.29, 2.46, 2.47, 1.24, 2.42, 1.91, 2.47, 1.24]
})

这里大约涉及两个步骤。首先,您需要比较df1df2,并在此比较的基础上过滤您的数据。

步骤1:比较

要根据列Metric比较df1df2,请运行:

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

步骤2:筛选

在pandas中,您可以使用pandas系列("单列数据帧"(过滤仅包含TrueFalse值的行:

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

相关内容

  • 没有找到相关文章

最新更新