Python 如何在基于值条件的切片之后获取数据帧中的下一行?
例如,我有以下两个数据帧Python 如何在基于值条件的切片之后获取数据帧中的下一行?,python,dataframe,Python,Dataframe,例如,我有以下两个数据帧 In [29]: pbm_sig Out[29]: Open Trouble Timestamp 2019-12-22 06:40:00+00:00 7137.00 dis_val 2019-12-22 06:45:00+00:00 7134.34 dis_val 2019-12-22 06:50:00+00:00 7135.03
In [29]: pbm_sig
Out[29]:
Open Trouble
Timestamp
2019-12-22 06:40:00+00:00 7137.00 dis_val
2019-12-22 06:45:00+00:00 7134.34 dis_val
2019-12-22 06:50:00+00:00 7135.03 dis_val
2019-12-22 06:55:00+00:00 7131.74 dis_val
In [30]: known_ca
Out[30]:
Open Trouble Corrective
Timestamp
2019-12-22 06:40:00+00:00 7137.00 dis_val remove
2019-12-22 06:45:00+00:00 7134.34 dis_val remove
2019-12-22 06:50:00+00:00 7135.03 dis_val keep
2019-12-22 06:55:00+00:00 7131.74 dis_val remove
2019-12-22 07:00:00+00:00 7188.00 dis_val add
2019-12-22 07:05:00+00:00 7389.00 short_dur remove
已知的ca是一个更大的数据帧,但这里有一个包含相关数据的摘录。
我使用以下代码检索感兴趣的行(关于包含pbm_sig的内容)
现在是问题。我想获得已知的\u ca中的下一行,即在纠正措施数据框中检索到的最后一行之后的那一行。举个例子,我指的是这一行:
2019-12-22 07:00:00+00:00 7188.00 dis_val add
请问,你有什么办法吗?
谢谢你的帮助。
祝您今天过得愉快。
最好,移开面罩:
mask_orig = (known_ca['Trouble'].isin(pbm_sig['Trouble'])) & (known_ca.index.isin(pbm_sig.index))
mask_shifted = mask_orig.shift(1)
如果不希望原始值介入,请排除它们,即
mask_shifted = mask_shifted & ~mask_orig
df = df[mask_shifted]
移动遮罩:
mask_orig = (known_ca['Trouble'].isin(pbm_sig['Trouble'])) & (known_ca.index.isin(pbm_sig.index))
mask_shifted = mask_orig.shift(1)
如果不希望原始值介入,请排除它们,即
mask_shifted = mask_shifted & ~mask_orig
df = df[mask_shifted]
你好,Oleg O,非常感谢您的反馈。实际上,我想把最后一行添加到mask_orig中,条件是“Corrective”列中的值是“add”,而“Trouble”列中的值与pbm_sig数据帧中的第一行相同(这里是“dis_val”)。您是否知道是否有一个“扩展”功能而不是您建议的“移位”功能,以便保留第一行?如果没有,我想我将使用您的建议仅获取最后一行,然后使用append()将其添加到mask_orig。再次感谢你的帮助!在这种情况下,如果我理解正确,您可以对原始掩码执行逻辑或,即
掩码原掩码|掩码移位
。你好,Oleg O,非常感谢您的反馈。实际上,我想把最后一行添加到mask_orig中,条件是“Corrective”列中的值是“add”,而“Trouble”列中的值与pbm_sig数据帧中的第一行相同(这里是“dis_val”)。您是否知道是否有一个“扩展”功能而不是您建议的“移位”功能,以便保留第一行?如果没有,我想我将使用您的建议仅获取最后一行,然后使用append()将其添加到mask_orig。再次感谢你的帮助!在这种情况下,如果我理解正确,您可以对原始掩码执行逻辑或操作,即掩码原始|掩码移位
。