我想比较基于S/N
和Metric
列的数据帧,以找到从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]
})
这里大约涉及两个步骤。首先,您需要比较df1
和df2
,并在此比较的基础上过滤您的数据。
步骤1:比较
要根据列Metric
比较df1
和df2
,请运行:
df1['Metric'] != df2['Metric']
0 True
1 False
2 True
3 False
步骤2:筛选
在pandas中,您可以使用pandas系列("单列数据帧"(过滤仅包含True
或False
值的行:
inds = df1['Metric'] != df2['Metric']
df2.loc[inds, :]
S/N Age Metric
# 0 001 2.46 4.29
# 2 003 2.00 2.47