Python DataFrame: найти значение предыдущей строки перед определенным значением с тем же значением в других столбцах - PullRequest
3 голосов
/ 18 октября 2019

У меня есть datafame следующим образом

import pandas as pd
d = {
    'Name' : ['James', 'John', 'Peter', 'Thomas', 'Jacob', 'Andrew','John', 'Peter', 'Thomas', 'Jacob', 'Peter', 'Thomas'],
    'Order' : [1,1,1,1,1,1,2,2,2,2,3,3],
    'Place' : ['Paris', 'London', 'Rome','Paris', 'Venice', 'Rome', 'Paris', 'Paris', 'London', 'Paris', 'Milan', 'Milan']
}

df = pd.DataFrame(d)

      Name  Order   Place
0    James      1   Paris
1     John      1  London
2    Peter      1    Rome
3   Thomas      1   Paris
4    Jacob      1  Venice
5   Andrew      1    Rome
6     John      2   Paris
7    Peter      2   Paris
8   Thomas      2  London
9    Jacob      2   Paris
10   Peter      3   Milan
11  Thomas      3   Milan
[Finished in 0.7s]

В кадре данных представлены люди, посещающие различные города, в столбце Order определяется порядок посещения.

Я быКак найти, какой город люди посещали до Paris. Ожидаемый фрейм данных выглядит следующим образом:

     Name  Order   Place

1     John      1  London
2    Peter      1    Rome
4    Jacob      1  Venice

Какой питонный способ найти его?

1 Ответ

5 голосов
/ 18 октября 2019

Использование merge

s = df.loc[df.Place.eq('Paris'), ['Name', 'Order']]
m = s.assign(Order=s.Order.sub(1))

m.merge(df, on=['Name', 'Order'])

    Name  Order   Place
0   John      1  London
1  Peter      1    Rome
2  Jacob      1  Venice
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...