【发布时间】:2019-07-31 16:21:38
【问题描述】:
我有两张每天生成的数据非常相似的表(相似但不相同的数据)。
样品表 RT20190101
Time Sensor Name StaTus Reading Temp Grade Acidity
20190101-830, A345CRT, XXXXXXX, Active, 5.6, 54, 8, 3.2
20190101-930, A445ADE, XXXXXXX, Active, 5.5, 54, 8, 1.2
20190101-1030, D546RTE, XXXXXXX, Active, 5.5, 55, 8, 2
20190101-1130, D678FRT, XXXXXXX, De-Active, 5.7, 57, 7, 3.5
样品表 RT20190102
Time Sensor Name StaTus Reading Temp Grade Acidity
20190102-830, A345CRT, XXXXXXX, Active, 5.6, 54, 8, 3.2
20190102-930, A445ADE, XXXXXXX, De-Active, 5.6, 56, 7, 1.2
20190102-1030, D546RTE, XXXXXXX, De-Active, 5.5, 56, 8, 2
20190102-1130, D678FRT, XXXXXXX, Active, 5.5, 56, 9, 2
我想比较两个文件上的传感器并标记它们,其中 TEMP、Grade 和 Acidity 发生了变化。
我可以使用 SQL 解决这个问题,但想在 Python 中复制以下代码
SELECT *
FROM (SELECT A.Time, B.Time, B.Sensor, B.Name, A.Status, B.Status,
IIf(A.Status<>B.Status,1,0) AS StatusChange, A.[Reading], B.[Reading],
IIf([A.Reading]<>[B.Reading],1,0) AS [Reading Change],
iif(A.Temp<>B.Temp,1,iif([A.Grade]<>[B.Grade],1,iif([A.Acidity]<>[B.Acidity],1,0))) AS Change
FROM RT20190101 AS A INNER
JOIN RT20190102 AS B ON A.Time = B.Time)
WHERE Change=1;
样本输出
A.Time B.Time Sensor Name A.Status B.Status StatusChange A.Reading B.Reading Reading Change
20190101-1130, 20190102-1130, D678FRT, XXXXXXX, De-Active, Active, 1, 5.7, 5.5, 1
我想获取所有传感器的列表、它们的名称、它们的状态是否改变以及读数是否改变。仅当TEMP、GRADE 和ACIDITY 级别也发生变化时。
【问题讨论】:
-
您能否发布示例输入数据和预期输出?
-
你在用熊猫吗?
-
输入和预期输出真的很有帮助。还有任何代码尝试表明您已经尝试过。
-
用示例数据更新了我的问题
-
您能否将您的示例数据和输出粘贴到问题中,因为链接不会永远存在,我们也无法将您的数据复制并粘贴到我们的代码中来帮助您解决这个问题