Как проверить, что запись A с версией X новее записи A с версией X-1 во фрейме данных pandas? - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть pandas DataFrame, подобный этому:

document id   document version   version date
101            1                  2020-01-01
101            2                  2020-01-02
102            1                  2020-01-01
103            1                  2019-05-02
101            3                  2019-12-03
102            2                  2020-01-02

Я не могу понять, как определить строки, которые имеют более новую версию документа с датой версии до или равной дате предыдущей версии ,

Итак, в этом примере я хочу идентифицировать строку 5 с документом 101, версией 3 и датой 2019-12-03, которая предшествует дате версии этого документа.

Спасибо много!

Ответы [ 2 ]

0 голосов
/ 23 февраля 2020

Я попробовал вариант @Allen, но не получил желаемого результата.

Попробуйте отсортировать по document id и document version, dfgroupby.diff и отфильтровать отрицательные значения

df1=df.sort_values(['document id', 'document version'])
df1['document date ']=pd.to_datetime(df1['document date '])
df1[df1.groupby('document id')['document date '].apply(lambda x: x.diff(1)).astype('timedelta64[D]')<0]

Результат:

enter image description here

0 голосов
/ 23 февраля 2020

Вы можете использовать применить:

(
    df.apply(lambda x: ((df['document id']==x['document id']) & 
                        (df['document version']<x['document version']) &
                        (df['version date']>x['version date'])).any(), axis=1)
    .pipe(lambda x: df.loc[x])
)

    document id document version    version date
4   101         3                   2019-12-03
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...