gpt4 book ai didi

python - 在 python 数据框中选择具有相同顺序值的行?

转载 作者:行者123 更新时间:2023-11-28 21:37:25 26 4
gpt4 key购买 nike

我正在处理一个包含事件列的数据框,其中包含 3 个值“event1”、“event2”和“event3”。我正在寻找一种方法来仅选择具有特定顺序的事件的行 ['event1', 'event2', 'event3']。

我尝试过:

df[df['Event'].isin(['event1', 'event2', 'event3'])]

但是给出了整个数据帧的结果。

import pandas as pd
df = pd.DataFrame([['event1','01:22:52.134'],['event2','03:21:31.123'], ['event1','21:12:52.544'],['event3','23:12:31.216'],['event1','10:22:02.134'],['event2','06:52:48.184'], ['event3','12:52:46.188'], ['event3','06:52:46.184'], ['event1','13:33:46.235'], ['event2','14:35:12.235'], ['event3','14:59:12.177']], columns=["Events",'Time'])
df

最佳答案

您需要 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.ological_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.ological_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

关于python - 在 python 数据框中选择具有相同顺序值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49551603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com