考虑从特定记录到 python 中特定记录的数据帧记录

Consider dataframe records from particular records to particular records in python

通过考虑现有的 datafarame 记录,我想从特定的 hp 源记录中获取记录到特定的 hp 源记录之前,如下面提到的输出结果。

这里是例子 df:

seq_id       file_name      source       date

b21345350    a.txt          ad          2022-04-15
b32145660    e.txt          qe          2022-04-15
c43526890    ace.txt        hp          2022-04-15
re2345566    wer.csv        hp          2022-04-15
b43251044    op.xlsx        fa          2022-04-15
b6512400     ip.csv         jm          2022-04-15
b9123420     tb.xlsx        tp          2022-04-15
b3214563     cv.txt         ux          2022-04-14
b45678900    em.txt         hp          2022-04-14
b65357023    rt.csv         hp          2022-04-14
b90879081    ty.txt         mp          2022-04-14
b19019019    sd.txt         jp          2022-04-14

但我想创建从 hp 源到 hp 源记录之前的结果数据帧,如下所示输出结果:

seq_id        file_name        source        date

c43526890    ace.txt        hp          2022-04-15
re2345566    wer.csv        hp          2022-04-15
b43251044    op.xlsx        fa          2022-04-15
b6512400     ip.csv         jm          2022-04-15
b9123420     tb.xlsx        tp          2022-04-15
b3214563     cv.txt         ux          2022-04-14

谁能帮我得到上面的结果数据框。

试试这个:

s = df['source'].eq('hp')
g = (s.ne(s.shift()) & s).cumsum()
d = {i:j for i,j in df.loc[g.ne(0)].groupby(g)}

创建字典后,您可以使用以下代码拉取第一组:

d.get(1)

输出:

      seq_id file_name source        date
2  c43526890   ace.txt     hp  2022-04-15
3  re2345566   wer.csv     hp  2022-04-15
4  b43251044   op.xlsx     fa  2022-04-15
5   b6512400    ip.csv     jm  2022-04-15
6   b9123420   tb.xlsx     tp  2022-04-15
7   b3214563    cv.txt     ux  2022-04-14