我正在处理一个包含3个值'event1','event2'和'event3'的列事件的数据框。我正在寻找一种方法来选择具有特定顺序事件的行['event1','event2','event3']。
我试过了:
UPDATE tbl_agentwidgetconfig
SET widget_config='hij'
WHERE agent_id=any(
SELECT agent_id FROM tbl_agent
WHERE agent_loginid='2man')
AND widget_id=5;
但结果是整个数据帧。
<Grid>
<Grid>
<TreeViewItem Name="itemScreen" />
答案 0 :(得分:5)
你需要3个条件:
m = df.Events.eq('event1')
& df.Events.shift(-1).eq('event2')
& df.Events.shift(-2).eq('event3')
现在将面具向前移动:
df[(m | m.shift() | m.shift(2))]
Events Time
4 event1 10:22:02.134
5 event2 06:52:48.184
6 event3 12:52:46.188
8 event1 13:33:46.235
9 event2 14:35:12.235
10 event3 14:59:12.177
对于任意数量的事件,您可以使用np.logical_and.reduce
:
events = ['event1', 'event2', 'event3']
m = pd.Series(
np.logical_and.reduce([
df.Events.shift(-i).eq(e) for i, e in enumerate(events)
])
)
第二步后跟np.logical_or.reduce
;
df[np.logical_or.reduce([
m.shift(i).fillna(False) for i in range(len(events))
])
]
Events Time
4 event1 10:22:02.134
5 event2 06:52:48.184
6 event3 12:52:46.188
8 event1 13:33:46.235
9 event2 14:35:12.235
10 event3 14:59:12.177